
03.06.2018, 13:20
|
|
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами:
5447649
Репутация:
28
|
|
Почему при создании нового потока с бесконечным циклом сильно нагружается ЦП и как это исправить?
При одном потоке нагружается до 50%, при двух до 100%
C++:
Код:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
#pragma comment(lib, "User32.lib")
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
ThreadOne
(
)
{
while
(
true
)
{
}
}
void
ThreadTwo
(
)
{
while
(
true
)
{
}
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
||
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
||
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
ThreadOne
,
0
,
0
,
0
)
;
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
ThreadTwo
,
0
,
0
,
0
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}
|
|
|