我已经在网络上搜索了很长一段时间,因此我在SO上遇到了一些答案,但是他们并没有真正回答我的问题。
在我继续之前,这些是我检查出的一些问题: Sequence Types — list, tuple, range, Equivalence of WaitForSingleObject() & ResetEvent() in Linux, Linux/POSIX equivalent for Win32's CreateEvent, SetEvent, WaitForSingleObject
我目前正在移植几年前开发的专有代码,以更新我们机器上的ECU。 该代码最初是为WinCE开发的(这是在机舱的终端和ECU本身上运行的代码)。
大多数代码已移植,可编译和链接,而我仍在围绕移植的代码实现新的更新程序,但是缺少一个难题。 我有一个包含句柄的结构。 我已经重复使用了这些intptr,以便可以使用它们来管理文件描述符,但是代码需要WaitForSingleObject才能在其他HANDLE上等待。
if (WaitForSingleObject(updateStruct->abortEvent, 0) == WAIT_OBJECT_0)
{
updateStruct->errorNumber = 0x0014L;
return FALSE;
}
我已经阅读了很多有关使用pthread的知识,我什至找到了一个名为pevents的库,该库应该将WinAPI调用转换为POSIX调用,但是我发现的大多数解决方案都需要C ++ 11(我不能出于某种原因(我不确定自己)使用它们,或者它们根本无法实现,因为我需要尽可能完整地保留代码,以便可以在原始平台上进行编译/使用-因此,我不能简单地从使用手柄切换。
在C ++ 98/03中有相对简单的方法来实现这种功能吗? 我总是可以对其进行混淆,只是创建一个循环,以循环超时时间并运行到超时时间,但是应用程序将无法正常工作,因此这不是一个选择;)