如何调用每个线程一次函数
How to call a function once per thread
如何确保每线仅调用一次函数/方法?
i具有定期调用的函数,它必须在同一线程中只调用一次初始化方法。但是,如果另一个线程调用此功能,则必须为此新线程执行初始化,但仅一次。
是否有执行此操作的机制?
我有一个客户端/服务器实现:我的方法hello()由客户定期调用:
void ClassB::hello() {
InitFunction();
/* something to do */
}
在另一堂课中,我的initfunction看起来像:
void ClassA::InitFunction() {
initData();
/* other stuff */
}
initdata()必须仅通过线程调用一次。我想确保此功能仅称为一次(或一次initfunction())。我正在使用C 11。我已经检查了std :: call_once,但我认为它不能解决我的问题。
谢谢。
使用单身模式,其中单例存储在TLS(线程本地存储)中。
实际上是一个广泛的答案,因为您的问题也很广泛。TLS通常由您使用的运行时提供,因此要获得更好的答案,请显示您到目前为止所取得的成就,并告诉我们更多有关您的运行时/操作系统和编译器的信息。
相关文章:
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何为非常量和常量重载实现一次成员函数?
- 某些 boost::asio 异步函数是否将处理程序连接到操作,以便处理程序被触发一次?
- 如何一次运行3个函数?
- 循环中本地对象的析构函数是否保证在下一次迭代之前被调用?
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 仅在函数中设置静态变量一次
- 有没有办法一次运行 3 个创建窗口函数?
- 在可变函数调用中执行一次语句
- 为什么转换运算符调用复制构造函数两次,而等效函数只调用它一次
- 为什么一次包装 typedef 函数签名与原始签名不匹配
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 我需要线程函数在不停止实际程序的情况下,每2秒打印一次随机数
- Android JNI RegisterNatives:对所有内容调用一次,或者每个函数调用一次
- 如何在 constexpr 构造函数中初始化矩阵一次?
- cppUnit:针对多个测试方法执行一次的设置函数
- 为什么调用 cout.operator<<(const char*) 打印地址而不是字符串? 如何创建一个函数本地静态"HashSet<char>"并初始化它一次?
- 跨类的多个实例调用函数一次
- C++一次将函数标记为静态就足够了?