本文整理汇总了C++中SemaphoreImpl::wait方法的典型用法代码示例。如果您正苦于以下问题:C++ SemaphoreImpl::wait方法的具体用法?C++ SemaphoreImpl::wait怎么用?C++ SemaphoreImpl::wait使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SemaphoreImpl
的用法示例。
在下文中一共展示了SemaphoreImpl::wait方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: read
bool read(PortReader& reader, bool willReply = false) {
// called by user
// user claimed they would reply to last read, but then
// decided not to.
if (replyDue) {
Bottle emptyMessage;
reply(emptyMessage,false,false);
replyDue = false;
dropDue = false;
}
if (willReply) {
replyDue = true;
}
stateMutex.wait();
readActive = true;
readDelegate = &reader;
writeDelegate = NULL;
this->willReply = willReply;
consume.post(); // happy consumer
stateMutex.post();
produce.wait();
stateMutex.wait();
if (!readBackground) {
readDelegate = NULL;
}
stateMutex.post();
bool result = readResult;
return result;
}
示例2: clear
virtual ~Private()
{
Port *closePort = nullptr;
stateSema.wait();
if (port!=nullptr) {
closePort = port;
}
stateSema.post();
if (closePort!=nullptr) {
closePort->close();
}
stateSema.wait();
clear();
//stateSema.post(); // never give back mutex
}
示例3: configReader
void configReader(PortReader& reader) {
stateMutex.wait();
readActive = true;
readBackground = true;
readDelegate = &reader;
consume.post(); // just do this once
stateMutex.post();
}
示例4: finishReading
void finishReading() {
if (!readBackground) {
stateMutex.wait();
closed = true;
consume.post();
consume.post();
stateMutex.post();
}
}
示例5: reply
bool reply(PortWriter& writer, bool drop, bool /*interrupted*/) {
// send reply even if interrupt has happened in interim
if (!replyDue) return false;
replyDue = false;
dropDue = drop;
writeDelegate = &writer;
consume.post();
produce.wait();
bool result = readResult;
return result;
}
示例6: openable
void openable() {
stateMutex.wait();
closed = false;
opened = true;
stateMutex.post();
}
示例7: promiseType
void promiseType(const Type& typ) {
stateMutex.wait();
this->typ = typ;
stateMutex.post();
}
示例8: getType
Type getType() {
stateMutex.wait();
Type t = typ;
stateMutex.post();
return t;
}