i try with two semaphores but my output A-B-A-B.. is not coming.The code is below and where i release the semaphores for getting the proper result.
void MyThread::run()
{
for(int lCount = 0; lCount < 5; lCount++)
{
if(messageStr == "A")
{
cout << "lCount in ThreadA:" << lCount << endl;
iSemA->acquire(1);
cout << "Thread : " << messageStr.toAscii().data() << endl;
iSemB->release(1);
}
else
{
cout << "lCount in ThreadB:" << lCount << endl;
iSemB->acquire(1);
cout << "Thread : " << messageStr.toAscii().data() << endl;
iSemA->release(1);
}
}
}
void MyThread::run()
{
for(int lCount = 0; lCount < 5; lCount++)
{
if(messageStr == "A")
{
cout << "lCount in ThreadA:" << lCount << endl;
iSemA->acquire(1);
cout << "Thread : " << messageStr.toAscii().data() << endl;
iSemB->release(1);
}
else
{
cout << "lCount in ThreadB:" << lCount << endl;
iSemB->acquire(1);
cout << "Thread : " << messageStr.toAscii().data() << endl;
iSemA->release(1);
}
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks