名前空間
変種
操作

std::call_once

提供: cppreference.com
< cpp‎ | thread

 
 
スレッドのサポートライブラリ
スレッド
Original:
Threads
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread(C++11)
this_thread空間
Original:
this_thread namespace
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
get_id(C++11)
yield(C++11)
sleep_for(C++11)
sleep_until(C++11)
相互排除
Original:
Mutual exclusion
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
mutex(C++11)
timed_mutex(C++11)
汎用のロック管理
Original:
Generic lock management
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
lock_guard(C++11)
unique_lock(C++11)
defer_lock_t
try_to_lock_t
adopt_lock_t
(C++11)
(C++11)
(C++11)
lock(C++11)
try_lock(C++11)
defer_lock
try_to_lock
adopt_lock
(C++11)
(C++11)
(C++11)
条件変数
Original:
Condition variables
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
condition_variable(C++11)
condition_variable_any(C++11)
notify_all_at_thread_exit(C++11)
cv_status(C++11)
先物
Original:
Futures
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
promise(C++11)
future(C++11)
shared_future(C++11)
packaged_task(C++11)
async(C++11)
launch(C++11)
future_status(C++11)
future_error(C++11)
future_category(C++11)
future_errc(C++11)
 
Defined in header <mutex>
template< class Function, class... Args >
void call_once( std::once_flag& flag, Function&& f, Args&& args... );
(C++11およびそれ以降)
複数のスレッドから呼び出された場合であっても、一度だけ関数fを実行.
Original:
Executes the function f exactly once, even if called from several threads.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
同じcall_once·オブジェクトを受け取りstd::once_flag呼び出しの各グループは、次の要件を満たします
Original:
Each group of call_once invocations that receives the same std::once_flag object will meet the following requirements:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • まさに機能のちょうど1つの(グループ内の呼び出しにfとして渡される)のいずれかの実行が行われます。これは、実行のために選択される関数は未定義です。選択した機能は、それが可決されたcall_onceの呼び出しと同じスレッドで実行され.
    Original:
    Exactly one execution of exactly one of the functions (passed as f to the invocations in the group) is performed. It is undefined which function will be selected for execution. The selected function runs in the same thread as the call_once invocation it was passed to.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • 選択した機能の実行前に上記のグループに戻りなしで呼び出しが正常に完了されていない、つまり、例外によって終了しません.
    Original:
    No invocation in the group returns before the abovementioned execution of the selected function is completed successfully, that is, doesn't exit via an exception.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • 例外によって選択された関数が終了する場合は、呼び出し元に伝播されます。もう一つの機能は、次に選択され、実行され.
    Original:
    If the selected function exits via exception, it is propagated to the caller. Another function is then selected and executed.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.

目次

[編集] パラメータ

flag -
正確に1つの関数が実行されているオブジェクト、
Original:
an object, for which exactly one function gets executed
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
f -
呼び出される関数です
Original:
function to call
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
args... -
引数は、関数に渡す
Original:
arguments to pass to the function
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集] 値を返します

(なし)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集] 例外

  • std::system_errorいずれかの条件が指定されるように実行されるのcall_onceへの呼び出しを防ぎます
    Original:
    std::system_error if any condition prevents calls to call_once from executing as specified
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • fによってスローされた例外
    Original:
    any exception thrown by f
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.

[編集]

#include <iostream>
#include <thread>
#include <mutex>
 
std::once_flag flag;
 
void do_once()
{
    std::call_once(flag, [](){ std::cout << "Called once" << std::endl; });
}
 
int main()
{
    std::thread t1(do_once);
    std::thread t2(do_once);
    std::thread t3(do_once);
    std::thread t4(do_once);
 
    t1.join();
    t2.join();
    t3.join();
    t4.join();
}

Output:

Called once

[編集] も参照してください

(C++11)
call_onceは一度だけ関数を呼び出していることを確認するためのヘルパーオブジェクト
Original:
helper object to ensure that call_once invokes the function only once
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(クラス) [edit]