我有一个WIN32应用程序,我将它移植到LINUX GNU。我在WIN32应用程序中有事件库C代码。现在我已经尝试了几种在GNU linux中实现相同的方法,但不知何故,我感觉这段代码无法正常工作。将WIN32应用程序移植到Linux - 事件在Linux中如何工作?
首先,我创建了一个实现事件的结构。为了实现'SetEvent','ResetEvent','WaitForSingleObject',我实现了下面的代码。
MyEvent CreateEvent(void)
{
MyEvent e1;
e1.m_bool = 1;
return e1;
}
void SetEvent(MyEvent evt)
{
evt.m_bool = 1;
pthread_cond_broadcast(&evt.m_condition);
}
void ResetEvent(MyEvent evt)
{
evt.m_bool = 0;
pthread_cond_broadcast(&evt.m_condition);
}
int WaitForSingleObject(MyEvent evt, unsigned timeout)
{
pthread_cond_wait(&(evt.m_condition),&(evt.m_mutex));
return SUCCESS;
}
现在我们对m_mutex和m_bool的用法感到困惑。我正在寻找的是一个示例代码或演示。
我已经尝试了所有钥匙到锁上,但似乎门仍然锁着。任何帮助都可以。谢谢 !
为什么你需要'm_bool'? – 2013-02-19 10:11:55
我保留它的事件状态。我可以检查m_bool以确定事件是否已设置。 – 2013-02-19 10:12:56
您是否从Windows Mobile的应用程序移植? – 2013-02-19 10:16:09