0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
Ну и полный пример:
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
#include "process.h" // специально для потока
void fThredFunct1(void* pv); // декларация функции потока
__declspec(thread) DWORD dwTlsIndex; // локальная статическая функция для потока
void main()
{
ULONG hThread1 = 0; // Идентификатор потока 1
ULONG hThread2 = 0; // Идентификатор потока 2
//unsigned long _beginthread( void( __cdecl *start_address )( void * ),
// unsigned stack_size, void *arglist );
hThread1 = _beginthread(fThredFunct1,0,NULL); // создали первый поток
if (hThread1==-1)
cout << "Error create thread" << endl;
hThread2 = _beginthread(fThredFunct1,0,NULL); // создали второй поток
if (hThread1==-2)
cout << "Error create thread" << endl;
Sleep(2000); // ждем
}
void fThredFunct1(void* pv) // реализация функции потока
{
dwTlsIndex=TlsAlloc(); // Запросить индекс
if (dwTlsIndex==-1) // проверить на ошибку
{
cout << "Error TlsAlloc " << endl;
return;
}
cout << dwTlsIndex << endl;
Sleep(1000);
if ( TlsFree( dwTlsIndex)==0 ) // освободить индекс
{
cout << "Error TlsFree" << endl;
return;
}
}
Многопоточное говно
Гуглояндексится.
Запостил:
kir_rik ,
28.08.2018 (Updated 28.08.2018 )
З.Ы. А, он тут и юзается... Тогда цель кода вообще не понятна.
Ответьте кто-нибудь страйкиру, кто знает как повторить баг.
test
test
test
test
test
test
Раз раз
Раз раз
Раз раз
Теперь ясно, кто сидит под gost...
В сердце каждого из нас!
трехпоточное
или нуль-поточное?