我有兩個應用程序之間的Windows信號量問題。應用程序等待釋放信號(Qt),另一個應用程序發送釋放信號(MSVC2008)。但它不起作用。Windows Semaphore和QSystemSemaphore
我測試了Qt-Qt和MSVC2008-MSVC2008模式並且它們成功了。但是當我嘗試Qt-MSVC2008模式時失敗。
// MSVC2008:
#include <windows.h>
#include <stdio.h>
int main()
{
const WCHAR semName[] = L"TestSem";
PHANDLE sem = (HANDLE *) CreateSemaphore (NULL, 0, 1, semName);
if (sem == NULL)
{
sem = (HANDLE *)OpenSemaphore (SEMAPHORE_ALL_ACCESS, 0, semName);
}
if (sem == NULL)
{
printf("OPEN/CREATE ERROR\n");
return 0;
}
BOOL r = ReleaseSemaphore(sem, 1 ,NULL);
if (r)
printf("OK\n");
else
printf("RELEASE ERROR\n");
CloseHandle (sem);
return 0;
}
和
// Qt 4.8.0 :
#include <QSystemSemaphore>
#include <QCoreApplication>
#include <iostream>
int main()
{
QSystemSemaphore *sem_read = new QSystemSemaphore("TestSem");
std::cout << "Wait for signal: " << std::endl;
while (1)
{
sem_read->acquire();
std::cout << "Hi" << std::endl;
}
return 0;
}
當Qt的應用程序正在運行,執行MSVC2008-應用程序後,我想到,它在屏幕打印一個 「嗨」。但它不會。問題是什麼?!
注:我使用的是Windows 7和MinGW編譯Qt的
你確認你使用MSVC2008編譯你的Qt應用程序? – Koying 2012-03-08 13:13:49
不,我爲Qt使用MinGW – deepmax 2012-03-08 13:15:33