动态创建线程的有关问题
动态创建线程的问题
使用
创建了m_nThreads个线程,因为每个线程的名字都是_WorkerThread,所以具体配置每个线程的工作的时候不知道怎么配置!具体用线程的句柄或是线程的ID怎么用呢?!
------解决方案--------------------
m_phWorkerThreads[i]不是线程的句柄吗
------解决方案--------------------
看你开线程做什么了,你要实现什么?如果创建的线程共用_WorkerThread函数,那就只需写一份实现了
------解决方案--------------------
既然不一样,那线程函数你就分开写了。你不知道怎么实现?是不知道怎么去定义线程函数还是不知道在线程函数中实现你想要的功能
------解决方案--------------------
HANDLE WINAPI CreateThread(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId
);
lpParameter [in, optional]
A pointer to a variable to be passed to the thread.
传进去不同的参数
使用
HANDLE* m_phWorkerThreads = new HANDLE[m_nThreads];
for (int i = 0; i < m_nThreads; i++)
{
m_phWorkerThreads[i] = ::CreateThread(0, 0, _WorkerThread, …);
}
创建了m_nThreads个线程,因为每个线程的名字都是_WorkerThread,所以具体配置每个线程的工作的时候不知道怎么配置!具体用线程的句柄或是线程的ID怎么用呢?!
------解决方案--------------------
m_phWorkerThreads[i]不是线程的句柄吗
------解决方案--------------------
看你开线程做什么了,你要实现什么?如果创建的线程共用_WorkerThread函数,那就只需写一份实现了
------解决方案--------------------
既然不一样,那线程函数你就分开写了。你不知道怎么实现?是不知道怎么去定义线程函数还是不知道在线程函数中实现你想要的功能
------解决方案--------------------
HANDLE WINAPI CreateThread(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId
);
lpParameter [in, optional]
A pointer to a variable to be passed to the thread.
传进去不同的参数