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_mutex と m_bool の使用法について混乱しています。私が探しているのは、サンプル コードまたはデモです。
すべての鍵を施錠してみましたが、ドアがまだ施錠されているようです。どんな助けでも構いません。ありがとう !