我有一个 WIN32 应用程序,我正在将它移植到 LINUX GNU。我在 WIN32 应用程序中有事件基础 C 代码。现在我尝试了几种在 GNU linux 中实现相同功能的方法,但不知何故我觉得这段代码无法正常工作。
首先,我创建了一个结构来实现事件。
typedef struct _Event
{
int m_bool;
pthread_mutex_t m_mutex;
pthread_cond_t m_condition;
}MyEvent, * Event_handle;
为了实现“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 对 m_mutex 和 m_bool 的用法感到困惑。我正在寻找的是示例代码或演示。
我已经尝试了所有锁的钥匙,但门似乎仍然锁着。任何帮助都可以。谢谢 !