小弟在写一个动态库的时候碰到下面的问题。
动态库提供一个GET()接口并通过SOCKET和其他程序连接,调用GET()的时候,需要返回一个有效的数值。可是这个有效的数值可能需要等待一段时间才能从SOCKET送回来,我的意思是调用GET()函数的时候,直到有正确的值才返回。但不论用SLEEP
,WaitForSingleObject(),都会堵塞在GET函数那里,而不会从SOCKET收数。
怎么办,各位大狭快救救我。最好不要叫我开线程哦。
动态库提供一个GET()接口并通过SOCKET和其他程序连接,调用GET()的时候,需要返回一个有效的数值。可是这个有效的数值可能需要等待一段时间才能从SOCKET送回来,我的意思是调用GET()函数的时候,直到有正确的值才返回。但不论用SLEEP
,WaitForSingleObject(),都会堵塞在GET函数那里,而不会从SOCKET收数。
怎么办,各位大狭快救救我。最好不要叫我开线程哦。
extern "C"
__declspec(dllexport) int __stdcall GET()
{
if (WaitForSingleObject(m_hEventData,5000)==WAIT_TIMEOUT)
//本意是想等待事件发生,但堵塞在这里事件永远不会发生
{
return 0;
}
data=....//取值
return data;
}