System::Threading::Mutex κλάση
περιεχόμενα
[
κρύβω
]Mutex class
Mutex implemnetation. Objects of this class should only be allocated using System::MakeObject() function. Never create instance of this type on stack or using operator new, as it will result in runtime errors and/or assertion faults. Always wrap this class into System::SmartPtr pointer and use this pointer to pass it to functions as argument.
class Mutex : public System::Threading::WaitHandle
Μέθοδοι
| Μέθοδος | Περιγραφή |
|---|---|
| Mutex() | Πληροφορίες RTTI. |
| Mutex(bool) | Κατασκευαστής. |
| Mutex(bool, const String&) | Κατασκευαστής. |
| ReleaseMutex() | Απελευθερώνει το mutex. |
| static Remove(const String&) | Διαγράφει ένα ονομαστικό mutex από το σύστημα. |
| virtual Reset() | Επαναφέρει την κατάσταση του mutex. Δεν έχει υλοποιηθεί. |
| virtual Set() | Ορίζει το mutex σε κατάσταση σήματος. Δεν έχει υλοποιηθεί. |
| WaitOne() override | Κλειδώνει το mutex. Εκτελεί απεριόριστη αναμονή εάν είναι απαραίτητο. |
| WaitOne(int) override | Κλειδώνει το mutex. Εκτελεί αναμονή εάν είναι απαραίτητο. |
| WaitOne(TimeSpan) override | Κλειδώνει το mutex. Εκτελεί αναμονή εάν είναι απαραίτητο. |
Πεδία
| Πεδίο | Περιγραφή |
|---|---|
| static WaitTimeout | Ειδική τιμή που θα επιστραφεί από τη συνάρτηση, διαφορετικά επιστρέφει το δείκτη του αντικειμένου που έχει σήμα στον πίνακα, εάν το χρονικό όριο υπερβεί και τίποτα δεν σήμα. |
Παρατηρήσεις
#include "system/threading/mutex.h"
#include "system/threading/thread.h"
#include "system/console.h"
#include "system/convert.h"
#include "system/smart_ptr.h"
#include "system/string.h"
int main()
{
auto mutex = System::MakeObject<System::Threading::Mutex>();
System::String str;
const int THREADS_COUNT = 3;
std::vector<System::SharedPtr<System::Threading::Thread>> threads;
threads.reserve(THREADS_COUNT);
for (auto i = 0; i < THREADS_COUNT; ++i)
{
threads.push_back(System::MakeObject<System::Threading::Thread>([&mutex, &str]()
{
mutex->WaitOne();
str += u"Thread " + System::Convert::ToString(System::Threading::Thread::GetCurrentThreadId()) + u" started." + System::Environment::get_NewLine();
System::Threading::Thread::Sleep(200);
str += u"Thread " + System::Convert::ToString(System::Threading::Thread::GetCurrentThreadId()) + u" ended." + System::Environment::get_NewLine();
mutex->ReleaseMutex();
}));
threads[i]->Start();
}
System::Threading::Thread::Sleep(700);
System::Console::WriteLine(str);
return 0;
}
/*
This code example produces the following output:
Thread 1 started.
Thread 1 ended.
Thread 2 started.
Thread 2 ended.
Thread 3 started.
Thread 3 ended.
*/
Δείτε επίσης
- Class WaitHandle
- Namespace System::Threading
- Library Aspose.Page for C++