К примеру добавлю что при использовании слип длл файл замораживает всё свои потоки, как и потоки игры/программы в которой это внедреноС помощью первого ты делаешь слип только для отдельного потока (созданного с помощью std::this_tread), а с помощью второго - всю программу.
Могу ошибаться, но по-логике - это так.
Я в плане, вот есть функция, в ней есть Sleep(5), и эта функция работает в потоке, она разве по деффолту не останавливает поток, в котором этот Sleep и используетсся ?С помощью первого ты делаешь слип только для отдельного потока (созданного с помощью <thread>), а с помощью второго - слип на всю программу.
Могу ошибаться, но по-логике - это так.
Ну, как уже написали два раза до меня - Sleep() останавливает все потоки, в т.ч. тот, в котором он вызывается.Я в плане, вот есть функция, в ней есть Sleep(5), и эта функция работает в потоке, она разве по деффолту не останавливает поток, в котором этот Sleep и используетсся ?
По моему ты что-то не договариваешь, когда я использовал слип в своём чите (Который работал в мульти потоке) у меня ставились на паузу как все потоки чита так и все потоки игрыНа самом деле и слип и слип фор останавливают только тот поток в котором вызываются. Отличие заключается в том,что слип фор определен стандартам плюсов, а обычный слип только в винапи. Следовательно слееп фор может работать не толко на виндовс системах
Возможно ты использовал слип в функции, которая вызывалась в хуке или до createthread. В таком случае это будет тем же самым,что вызвать слип в главном потоке игрыПо моему ты что-то не договариваешь, когда я использовал слип в своём чите (Который работал в мульти потоке) у меня ставились на паузу как все потоки чита так и все потоки игры
Вполне возможно, спасибо за более понятное объяснениеВозможно ты использовал слип в функции, которая вызывалась в хуке или до createthread. В таком случае это будет тем же самым,что вызвать слип в главном потоке игры
#include <thread>
#include <chrono>
int main(int argc, char* argv[])
{
std::this_thread::sleep_for(std::chrono::milliseconds(10));
return 0;
}
int __cdecl main(int argc, const char **argv, const char **envp)
{
__int64 perf_frequency; // kr08_8
__int64 v4; // kr10_8
__int64 v5; // kr18_8
__int64 v6; // rax
unsigned int v7; // esi
__int64 v8; // rax
int v9; // edi
unsigned __int64 v10; // rcx
__int64 perf_counter; // [esp-14h] [ebp-5Ch]
__int64 v13; // [esp-14h] [ebp-5Ch]
unsigned int v14; // [esp+10h] [ebp-38h]
__int64 v15; // [esp+18h] [ebp-30h]
xtime v16; // [esp+30h] [ebp-18h] BYREF
perf_frequency = __Query_perf_frequency();
perf_counter = __Query_perf_counter();
v4 = 1000000000 * (perf_counter / perf_frequency) + 1000000000 * (perf_counter % perf_frequency) / perf_frequency;
if ( v4 == 0x7FFFFFFFFF67697Fi64 || HIDWORD(v4) == 0x7FFFFFFF && (unsigned int)v4 >= 0xFF67697F )
v15 = 0x7FFFFFFFFFFFFFFFi64;
else
v15 = v4 + 10000000;
while ( 1 )
{
v5 = __Query_perf_frequency();
v13 = __Query_perf_counter();
v6 = 1000000000i64 * (unsigned int)(v13 / v5);
v14 = v6 + 1000000000 * (v13 % v5) / v5;
v7 = (__PAIR64__(HIDWORD(v6) + 1000000000 * ((unsigned __int64)(v13 / v5) >> 32), v6) + 1000000000 * (v13 % v5) / v5) >> 32;
if ( v15 == __PAIR64__(HIDWORD(v6) + 1000000000 * ((unsigned __int64)(v13 / v5) >> 32), v6)
+ 1000000000 * (v13 % v5) / v5
|| v15 < __SPAIR64__(v7, v14) )
{
break;
}
v8 = 100 * __Xtime_get_ticks();
v10 = v15 - __PAIR64__(v7, v14);
v9 = v15 - v14;
if ( (double)(__int64)(v15 - __PAIR64__(v7, v14)) > 8.64e14 )
{
v9 = -1391067136;
HIDWORD(v10) = 201165;
}
v16.sec = (__int64)(__PAIR64__(HIDWORD(v10), v9) + v8) / 1000000000;
v16.nsec = (__int64)(__PAIR64__(HIDWORD(v10), v9) + v8) % 1000000000;
__Thrd_sleep(&v16);
}
return 0;
}
void __cdecl Thrd_sleep(const xtime *a1)
{
int v2; // eax
xtime v3; // [rsp+20h] [rbp-28h] BYREF
xtime_get(&v3, 1);
do
{
do
{
v2 = Xtime_diff_to_millis2(a1, &v3);
Sleep(v2);
xtime_get(&v3, 1);
}
while ( v3.sec < a1->sec );
}
while ( v3.sec == a1->sec && v3.nsec < a1->nsec );
}
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz