采用QT5.15.2,作業系統為Ubuntu18.04(在VmWare下運行),
撰寫下面的兩個通過QSystemSemaphore同步的行程,將會發現例外,這個問題看起來比較嚴重(已經確認該程式在window 10作業系統下沒有問題)
服務端程式:
QSystemSemaphore InvalidDataSysSemaphore("TestKeyInvalid",1);
QSystemSemaphore ValidDataSysSemaphore("TestKeyValid");
quint32 ReceiveTimeCount = 0;
while(1)
{
if(ValidDataSysSemaphore.acquire())
{
ReceiveTimeCount++;
InvalidDataSysSemaphore.release();
if(ReceiveTimeCount>=32765)
qDebug("等待成功次數=%d", ReceiveTimeCount);//這里只能接收到32767次,后面不會接收,但重新啟動程式將可能會莫明其妙繼續收到信號量
}
else
{
qDebug("等待錯誤,已經等待次數=%d", ReceiveTimeCount);
break;
}
}
客戶端程式:
QSystemSemaphore InvalidDataSysSemaphore("TestKeyInvalid");
QSystemSemaphore ValidDataSysSemaphore("TestKeyValid");
quint32 SendTimeCount = 0;
for(quint32 i=0;i<32769;i++)
{
if(InvalidDataSysSemaphore.acquire())
{
SendTimeCount++;
ValidDataSysSemaphore.release();
}
else
{
QString str = InvalidDataSysSemaphore.errorString();//當發送到第32768次的時候,發送錯誤,這里提示out of resources資訊
qDebug("發送錯誤,已經發送次數=%d", SendTimeCount);
break;
}
}
出現發送了32767后將無法發送信號量,不知道該如何解決?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/255721.html
標籤:Qt
上一篇:qt creator運行出現 AbI is incompatible,device supports abis:armeabi-v7a。
下一篇:Marker圖示管控問題
