15 Ocak 2018 Pazartesi

std::call_once

Giriş
Şu satırı dahil ederiz.
#include <mutex>
Bir metodun tek bir kere çağrılmasını sağlar.

Örnek
Şöyle yaparız
#include <mutex>

std::once_flag flag;

for (int i = 0; i < 10; ++i)
    std::call_once(flag, [](){ std::puts("once\n"); });
Örnek
Şöyle yaparız.
void Foo() {...}

std::once_flag flag;
std::call_once(flag, foo);
Örnek
Şöyle yaparız.
std::once_flag once;
int x;

void init() { x = 10; }

void f() {
  std::call_once(once_flag, init);
  assert(x == 10);
}

int main() {
  std::thread t1(f), t2(f);
  t1.join();
  t2.join();
}

Hiç yorum yok:

Yorum Gönder