मैंने म्यूटेक्स के बारे में कुछ दस्तावेज पढ़े हैं और अभी भी मुझे एकमात्र विचार मिला है कि यह धागे को संसाधनों तक पहुंचने से रोकने में मदद करता है जो पहले से ही किसी अन्य संसाधन द्वारा उपयोग किया जा रहा है।क्या कोई म्यूटेक्स को समझा सकता है और इसका उपयोग कैसे किया जाता है?
मैं कोड स्निपेट से मिल गया और मार डाला जो ठीक काम करता है:
#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");
}
लेकिन क्या मुझे समझ नहीं आता जहां धागा है और जहां साझा संसाधन है? क्या कोई भी बेहतर लेख या दस्तावेज समझा सकता है या प्रदान कर सकता है?
आपका कोड स्निपेट अधूरा लगता है, उदा। मैं नहीं देख सकता कि FunctionToWriteToDatabase कहां कहा जाता है। क्या आप अधिक प्रदान कर सकते हैं और आप इसे कहां से प्राप्त कर चुके हैं?यह उपयोगी भी होगा यदि आपने स्पष्ट किया कि आपका प्रश्न सामान्य रूप से म्यूटेक्स या इस विशेष कोड स्निपेट के बारे में है या नहीं। – danio