Покажу реализацию на простом примере.
Простой класс.
class Data;
struct dataStruct
{
Data *data;
HANDLE handle;
};
class Data
{
public:
Data()
:xData(10),
yData(10)
{
}
~Data()
{
}
int & x(){return this->xData;}
int & y(){return this->yData;}
int sum()const{return xData+yData;}
/*Запиливаем потоковую функцию*/
friend DWORD WINAPI thread(void *param)
{
dataStruct *data = (dataStruct*)param;
int count = data->data->sum();
for(int i=0;i< count ; i++)
{
Sleep(100);
cout << data->data->sum() << endl;
data->data->x()++;
data->data->y()++;
}
return 0;
}
private:
int xData;
int yData;
};
А теперь просто в main будем запускать.
void main()
{
for(int i = 0; i<10; i++)
{
Data data;
dataStruct rec;
rec.data = &data;
Sleep(1000);
rec.handle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)thread,(LPVOID)&rec ,0,0);
}
Sleep(10000);
}
удобно
ОтветитьУдалить