std::call_once

来自cppreference.com
< cpp‎ | thread

 
 
线程的支持库

|- class="t-nv-h1"

| colspan="5" |
主题
原文:
Threads
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

|-

| |- |

thread(C++11)
this_thread命名空间
原文:
this_thread namespace
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
get_id(C++11)
yield(C++11)

|

sleep_for(C++11)
sleep_until(C++11)

|-

|- class="t-nv-h1"

| colspan="5" |
相互排斥
原文:
Mutual exclusion
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

|- | |- |

mutex(C++11)
timed_mutex(C++11)

|

recursive_mutex(C++11)
recursive_timed_mutex(C++11)

|-

通用锁管理
原文:
Generic lock management
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

| |- |

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)

|- class="t-nv-h1"

| colspan="5" |
条件变量
原文:
Condition variables
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

|-

condition_variable(C++11)
condition_variable_any(C++11)
notify_all_at_thread_exit(C++11)
cv_status(C++11)

|- class="t-nv-h1"

| colspan="5" |
期货
原文:
Futures
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

|- | |- |

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)

|-

 
在头文件 <mutex> 中定义
template< class Function, class... Args >
void call_once( std::once_flag& flag, Function&& f, Args&& args... );
(since C++11)
。执行功能f一次,即使从多个线程调用.
原文:
Executes the function f exactly once, even if called from several threads.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
。每个组的call_once调用接收相同的std::once_flag对象的将符合下列要求:。
原文:
Each group of call_once invocations that receives the same std::once_flag object will meet the following requirements:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
整整一个执行完全相同的功能(通过f该组中的调用)。将被选择用于执行的函数,它是未定义。所选择的功能call_once调用传递给运行在同一个线程中.
原文:
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.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 。参数。

flag -
。一个对象,其中一个功能被执行。
原文:
an object, for which exactly one function gets executed
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
f -
。要调用的函数。
原文:
function to call
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
args... -
。传递给函数的参数。
原文:
arguments to pass to the function
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

===。 返回值。===

。 (无)。
原文:
(none)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 。例外。

[编辑] 。为例。

#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();
}

输出:

Called once

[编辑] 。另请参阅。

(C++11)
call_once的辅助对象,确保只调用该函数一次
原文:
helper object to ensure that call_once invokes the function only once
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(类) [edit]
来自“http://zh.cppreference.com/mwiki/index.php?title=cpp/thread/call_once&oldid=33777