线程互斥等候超时, 找不到原因
线程互斥等待超时, 找不到原因DLL有一个线程,若干导出函数. 线程处理一块内存, 导出函数等待线程处理后输
线程互斥等待超时, 找不到原因
DLL有一个线程,若干导出函数. 线程处理一块内存, 导出函数等待线程处理后输出这块内存.问题是有时候出现超时情况.
简化后下面这样:
g_hMutex = CreateMutex(NULL, FALSE, NULL);
//DLL导出的函数
int__stdcall DllFun(BYTE *pBuf)
{
//有时候超时,有时候正常, WHY???
if (WaitForSingleObject(g_hMutex, 3000) == WAIT_OBJECT_0)
{
//memcpy(pBuf, g_Buf, dwSize);
while (ReleaseMutex(g_hMutex));
return 1;
}
return 0;
}
//线程函数
unsigned __stdcall ThreadFun(void *parm)
{
while(!g_bTermiate)
{
if (WaitForSingleObject(g_hMutex, 3000) != WAIT_OBJECT_0)
{
Sleep(2);
continue;
};
//对g_Buf进行操作, 不超过0.5秒
//.......
while (ReleaseMutex(g_hMutex));
}
return 0;
}
[解决办法](WaitForSingleObject等待对方在指定时间内没有释放资源,当然会超时了
[解决办法]你是怎么得到的这个结论呢??会不会就是因为数据处理超时了呢?你试试这个时间再长点,看超时的情况有没有减少。
[解决办法]跟名字应该没有关系的
很可能就是0.5秒内没有处理完数据,然后超时了。
[解决办法] 呵呵,你自己没弄懂,别闹笑话了。
[解决办法]不好意思..弄笑话了.