## Monitor class


Sınıf [Monitor](./) nesnelere erişimi senkronize eden bir mekanizma sağlar.

```cpp
class Monitor : public System::Object
```

## Yöntemler

| Yöntem | Açıklama |
| --- | --- |
| static [Enter](./enter/)(const SharedPtr\<Object\>\&) | Belirtilen nesne üzerinde ayrıcalıklı bir kilit alır. |
| static [Enter](./enter/)(const System::SharedPtr\<Object\>\&, bool\&) | Belirtilen nesne üzerinde ayrıcalıklı bir kilit alır ve kilidin alınıp alınmadığını gösteren bir değeri atomik olarak ayarlar. |
| static [Exit](./exit/)(const SharedPtr\<Object\>\&) | Belirtilen nesne üzerindeki ayrıcalıklı kilidi serbest bırakır. |
| static [IsEntered](./isentered/)(const System::SharedPtr\<Object\>\&) | Mevcut iş parçacığının belirtilen nesne üzerindeki kilidi tutup tutmadığını belirler. |
| static [Pulse](./pulse/)(const SharedPtr\<Object\>\&) | Kilitli nesnenin durumundaki bir değişikliği bekleme kuyruğundaki bir iş parçacığına bildirir. Uygulanmadı. |
| static [PulseAll](./pulseall/)(const SharedPtr\<Object\>\&) | Nesnenin durumundaki bir değişikliği tüm bekleyen iş parçacıklarına bildirir. Uygulanmadı. |
| static [TryEnter](./tryenter/)(const SharedPtr\<Object\>\&) | Belirtilen nesne üzerinde ayrıcalıklı bir kilit almaya çalışır. Uygulanmadı. |
| static [TryEnter](./tryenter/)(const System::SharedPtr\<Object\>\&, bool\&) | Belirtilen nesne üzerinde ayrıcalıklı bir kilit almaya çalışır ve kilidin alınıp alınmadığını gösteren bir değeri atomik olarak ayarlar. |
| static [TryEnter](./tryenter/)(const SharedPtr\<Object\>\&, int32_t) | Belirtilen milisaniye sayısı kadar süreyle belirtilen nesne üzerinde ayrıcalıklı bir kilit almaya çalışır. Uygulanmadı. |
| static [TryEnter](./tryenter/)(const SharedPtr\<Object\>\&, TimeSpan) | Belirtilen süre boyunca belirtilen nesne üzerinde ayrıcalıklı bir kilit almaya çalışır. Uygulanmadı. |
| static [TryEnter](./tryenter/)(const System::SharedPtr\<Object\>\&, int32_t, bool\&) | Belirtilen süre boyunca, belirtilen nesne üzerinde ayrıcalıklı bir kilit almaya çalışır ve kilidin alınıp alınmadığını gösteren bir değeri atomik olarak ayarlar. |
| static [TryEnter](./tryenter/)(const System::SharedPtr\<Object\>\&, TimeSpan, bool\&) | Belirtilen süre boyunca, belirtilen nesne üzerinde ayrıcalıklı bir kilit almaya çalışır ve kilidin alınıp alınmadığını gösteren bir değeri atomik olarak ayarlar. |
| static [Wait](./wait/)(const SharedPtr\<Object\>\&, int32_t, bool) | Bir nesnedeki kilidi serbest bırakır ve mevcut iş parçacığını kilidi yeniden elde edene kadar engeller. Belirtilen zaman aşımı süresi dolarsa, iş parçacığı hazır kuyrukuna girer. İsteğe bağlı olarak, beklemeden önce senkronize bağlam için senkronizasyon alanından çıkar ve ardından alanı yeniden edinir. Uygulanmadı. |
| static [Wait](./wait/)(const SharedPtr\<Object\>\&, TimeSpan, bool) | Bir nesnedeki kilidi serbest bırakır ve mevcut iş parçacığını kilidi yeniden elde edene kadar engeller. Belirtilen zaman aşımı süresi dolarsa, iş parçacığı hazır kuyrukuna girer. İsteğe bağlı olarak, beklemeden önce senkronize bağlam için senkronizasyon alanından çıkar ve ardından alanı yeniden edinir. Uygulanmadı. |
| static [Wait](./wait/)(const SharedPtr\<Object\>\&, int32_t) | Bir nesnedeki kilidi serbest bırakır ve mevcut iş parçacığını kilidi yeniden elde edene kadar engeller. Belirtilen zaman aşımı süresi dolarsa, iş parçacığı hazır kuyrukuna girer. Uygulanmadı. |
| static [Wait](./wait/)(const SharedPtr\<Object\>\&, TimeSpan) | Bir nesnedeki kilidi serbest bırakır ve mevcut iş parçacığını kilidi yeniden elde edene kadar engeller. Belirtilen zaman aşımı süresi dolarsa, iş parçacığı hazır kuyrukuna girer. Uygulanmadı. |
| static [Wait](./wait/)(const SharedPtr\<Object\>\&) | Bir nesnedeki kilidi serbest bırakır ve mevcut iş parçacığını kilidi yeniden elde edene kadar engeller. Uygulanmadı. |
## Açıklamalar



```cpp
#include "system/threading/monitor.h"
#include "system/threading/thread.h"
#include "system/smart_ptr.h"
#include "system/string.h"
#include <iostream>
#include <vector>

int main()
{
  using namespace System::Threading;

  const auto threadsCount = 3;
  std::cout << "Threads count: " << threadsCount << std::endl;
  auto locker = System::MakeObject<System::Object>();
  int x = 0;

  std::vector<System::SharedPtr<Thread>> threads;
  threads.reserve(threadsCount);
  for (auto i = 0; i < threadsCount; ++i)
  {
    threads.emplace_back(System::MakeObject<Thread>([&x, &locker]() -> void {
      Monitor::Enter(locker);

      x = 1;
      for (auto i = 0; i < 5; ++i)
      {
        std::cout << Thread::get_CurrentThread()->get_Name() << ": " << x++ << std::endl;
        Thread::Sleep(100);
      }

      Monitor::Exit(locker);
    }));
    threads.back()->set_Name(System::String("Thread " + std::to_string(i)));
    threads.back()->Start();
  }

  Thread::Sleep(threadsCount * 100);

  for (auto& thread : threads)
  {
    thread->Join();
  }

  return 0;
}
/*
This code example produces the following output:
Threads count: 3
Thread 0: 1
Thread 0: 2
Thread 0: 3
Thread 0: 4
Thread 0: 5
Thread 1: 1
Thread 1: 2
Thread 1: 3
Thread 1: 4
Thread 1: 5
Thread 2: 1
Thread 2: 2
Thread 2: 3
Thread 2: 4
Thread 2: 5
*/
```

## Ayrıca Bakınız

* Class [Object](../../system/object/)
* Namespace [System::Threading](../)
* Library [Aspose.Page for C++](../../)
