Re: pthread memory leaks
"Stuart Redmann" <DerTopper@web.de> wrote in message
news:cb777f8c-9047-4e8d-9f75-00e6c7048999@l18g2000yql.googlegroups.com...
On 31 Mai, 01:29, jakash3 wrote:
I'm experimenting with signals and conditional variables to implement
thread suspension.
[snip]
Just out of curiosity: When I tried to write some platform-independent
code that worked with multiple threads I was quite amazed that there
is no equivalent for Win32 Events under Unix.
FWIW, Windows events can be emulated under POSIX Threads...
I guess that this is the
problem you are trying to deal with? (sorry, I know too little of the
pthread API to fully understand your code)
IPC aside for a moment, one could try something simple like the following
pseudo-code for a windows auto-reset event:
_______________________________________________________
struct win_auto_reset_event
{
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
bool m_set; // = true/false
void set()
{
pthread_mutex_lock(&m_mutex);
m_set = true;
pthread_mutex_unlock(&m_mutex);
pthread_cond_signal(&m_cond);
}
void wait()
{
pthread_mutex_lock(&m_mutex);
while (! m_set) pthread_cond_wait(&m_cond, &m_mutex);
m_set = false;
pthread_mutex_unlock(&m_mutex);
}
};
_______________________________________________________
and this pseudo-code for a windows manual-reset event:
_______________________________________________________
struct win_manual_reset_event
{
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
bool m_set; // = true/false
void set()
{
pthread_mutex_lock(&m_mutex);
m_set = true;
pthread_mutex_unlock(&m_mutex);
pthread_cond_broadcast(&m_cond);
}
void reset()
{
pthread_mutex_lock(&m_mutex);
m_set = false;
pthread_mutex_unlock(&m_mutex);
}
void wait()
{
pthread_mutex_lock(&m_mutex);
while (! m_set) pthread_cond_wait(&m_cond, &m_mutex);
pthread_mutex_unlock(&m_mutex);
}
};
_______________________________________________________