Tôi đọc một vài tài liệu về Mutex và vẫn là ý tưởng duy nhất tôi có được là nó giúp ngăn chặn các luồng truy cập vào tài nguyên đã được một tài nguyên khác sử dụng.Ai đó có thể giải thích Mutex và cách nó được sử dụng không?
tôi nhận được từ đoạn mã và thực thi mà hoạt động tốt:
#include <windows.h>
#include <process.h>
#include <iostream>
using namespace std;
BOOL FunctionToWriteToDatabase(HANDLE hMutex)
{
DWORD dwWaitResult;
// Request ownership of mutex.
dwWaitResult = WaitForSingleObject(
hMutex, // handle to mutex
5000L); // five-second time-out interval
switch (dwWaitResult)
{
// The thread got mutex ownership.
case WAIT_OBJECT_0:
__try
{
// Write to the database.
}
__finally {
// Release ownership of the mutex object.
if (! ReleaseMutex(hMutex)) {
// Deal with error.
}
break;
}
// Cannot get mutex ownership due to time-out.
case WAIT_TIMEOUT:
return FALSE;
// Got ownership of the abandoned mutex object.
case WAIT_ABANDONED:
return FALSE;
}
return TRUE;
}
void main()
{
HANDLE hMutex;
hMutex=CreateMutex(NULL,FALSE,"MutexExample");
if (hMutex == NULL)
{
printf("CreateMutex error: %d\n", GetLastError());
}
else if (GetLastError() == ERROR_ALREADY_EXISTS)
printf("CreateMutex opened existing mutex\n");
else
printf("CreateMutex created new mutex\n");
}
Nhưng gì tôi không hiểu là nơi là các chủ đề và ở đâu là tài nguyên được chia sẻ? Bất cứ ai có thể vui lòng giải thích hoặc cung cấp một bài viết hay tài liệu tốt hơn?
Đoạn mã của bạn có vẻ không đầy đủ, ví dụ: Tôi không thể thấy nơi FunctionToWriteToDatabase được gọi. Bạn có thể cung cấp nhiều hơn và bạn đã lấy nó từ đâu?Nó cũng sẽ hữu ích nếu bạn làm rõ liệu câu hỏi của bạn là về mutexes nói chung hay đoạn mã đặc biệt này. – danio