////////////////////////////////////////////////////////////
//
// Implementation of classes
// AConditionAttributes, ACondition
//
// Copyright 2001
//
////////////////////////////////////////////////////////////
#include "ACondition.h"
pthread_cond_t ConditionPattern = PTHREAD_COND_INITIALIZER;
// AConditionAttributes
AConditionAttributes::AConditionAttributes()
{
status = ::pthread_condattr_init(&attributes);
}
AConditionAttributes::~AConditionAttributes()
{
if(!status) ::pthread_condattr_destroy(&attributes);
}
int AConditionAttributes::set_shared()
{
if(status) return -1;
return ::pthread_condattr_setpshared(&attributes,PTHREAD_PROCESS_SHARED);
}
// ACondition
ACondition::ACondition():status(0)
{
condition = ConditionPattern;
//status = ::pthread_cond_init(&condition,0);
}
ACondition::ACondition(const AConditionAttributes& z):status(0)
{
condition = ConditionPattern;
status = ::pthread_cond_init(&condition,&z.attributes);
}
ACondition::~ACondition()
{
if(!status)
::pthread_cond_destroy(&condition);
}
int ACondition::signal()
{
if(status) return -1;
return ::pthread_cond_signal(&condition);
}
int ACondition::broadcast()
{
if(status) return -1;
return ::pthread_cond_broadcast(&condition);
}