0

我已经在网上搜索了很长一段时间,在这里我遇到了一些答案,但他们并没有真正回答我的问题。

在我开始之前,这些是我检查的一些问题: Linux 中 WaitForSingleObject() 和 ResetEvent() 的等效性,Win32 的 CreateEvent、SetEvent、WaitForSingleObject、 Linux WaitForSingleObject的 Linux/POSIX 等效

我目前正在移植几年前开发的专有代码,以更新我们机器上的 ECU。该代码最初是为 WinCE 开发的(在机舱的终端和 ECU 本身上运行的代码)。

大多数代码都是移植的,它编译和链接,我仍在围绕移植的代码实现一个新的更新程序,但是缺少一块拼图。我有一个包含句柄的结构。我重新使用了这些 intptr,因此我可以使用它们来管理文件描述符,但是代码需要 WaitForSingleObject 来等待其他 HANDLE。

if (WaitForSingleObject(updateStruct->abortEvent, 0) == WAIT_OBJECT_0)
{
    updateStruct->errorNumber = 0x0014L;
    return FALSE;
}

我已经阅读了很多关于使用 pthreads 的内容,我什至发现了一个名为 pevents 的库,据说它可以将 WinAPI 调用转换为 POSIX 调用,但是我发现的大多数解决方案都需要 C++11(由于某些原因我不能使用它)我不完全确定自己)或者它们根本无法实现,因为我需要尽可能完整地保留代码,以便可以在原始平台上编译/使用它 - 所以我不能简单地切换使用把手。

有没有一种相对简单的方法可以用 C++98/03 实现这种功能?我总是可以 pfusch 它并创建一个循环来循环超时并运行到超时,但是应用程序将无法工作,所以这不是一个真正的选择;)

4

0 回答 0