我正在使用Win32 API以及_begunthreadex调用来运行线程,如下:
struct StructItem
{
std::string title;
int amount;
};
StructItem structItems[33];
unsigned int id;
HANDLE thread = (HANDLE)_beginthreadex(NULL, 0, my_thread, (void*)structItems, 0, &id);
这是我的线程:
unsigned int __stdcall my_thread(void *p)
{
for (int i = 0; i < 20; i++)
{
// todo: print struct.title
Sleep(1000);
}
return 0;
}
就我所理解的,*p是指向我的结构体列表的指针,因为我将它们传递给了_beginthreadex调用的第4个参数,但我不知道如何转换*p,以便我能从线程内部访问结构体数组。
(StructItem*)p;
可能是吗? - πάντα ῥεῖstd::thread
。 - Ted Lyngmo