【发布时间】:2022-01-06 03:05:22
【问题描述】:
我想在多线程进程中实现一个高性能计数器,像这样,每个线程都有一个名为“t_counter”的线程本地计数器来计算查询(incr 1/query),并且在“定时器线程”中有一个名为“global_counter”,我想要的是每秒,global_counter 将获取每个 t_counter(s) 并将它们添加到 global_counter,但我不知道如何在“计时器线程”中获取每个 t_counter 值。另外,线程局部值将放在主内存中的哪个部分? .data 或 heap 或其他?如何动态分配内存大小(可能有 10 个线程或 100 个线程)? x86-64 是否使用段寄存器存储这样的值?
【问题讨论】:
-
"但是我不知道如何获取'timer thread'中的每个t_counter值",我存储t_counter指针来解决问题
-
我不会这样设计的。最好让所有线程每隔一段时间将其
counter值作为消息发送到管理类(消息传递)。最好不要使用共享内存。
标签: c++ thread-local