线程互斥等待超时, 找不到原因解决方案
线程互斥等待超时, 找不到原因 - C++ Builder / Windows SDK/APIDLL有一个线程,若干导出函数. 线程处理一
线程互斥等待超时, 找不到原因 - C++ Builder / Windows SDK/API
DLL有一个线程,若干导出函数. 线程处理一块内存, 导出函数等待线程处理后输出这块内存.问题是有时候出现超时情况.
简化后下面这样:
C/C++ code 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等待对方在指定时间内没有释放资源,当然会超时了
[解决办法]你是怎么得到的这个结论呢??会不会就是因为数据处理超时了呢?你试试这个时间再长点,看超时的情况有没有减少。
[解决办法][解决办法][解决办法]