在 C++11 中引入的 std::call_once
函数 可确保以线程安全的方式准确调用一次可调用对象。
由于这可以通过其他方式实现 - 什么时候应该使用 std::call_once
?它打算解决什么类型的问题?
请提供例子。
原文由 darune 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 C++11 中引入的 std::call_once
函数 可确保以线程安全的方式准确调用一次可调用对象。
由于这可以通过其他方式实现 - 什么时候应该使用 std::call_once
?它打算解决什么类型的问题?
请提供例子。
原文由 darune 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
示例:我将它用于 libcURL 以从网站检索 http(s) 数据。在 libcURL 中,您必须先进行 一次全局初始化,然后才能使用该库。鉴于初始化 不是线程安全的,但从网站请求数据是线程安全的,我使用
call_once
只调用一次我的初始化,无论在哪个线程中以及是否同时调用。