我有一個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