c - 接收信号时的线程通信

标签 c multithreading pthreads signals

我从主线程中生成了多个线程。所有这些线程都有相同的启动例程。该例程包含例程本地的计数器。我想定期打印这个计数器。我如何实现这一目标?

我知道我们可以使用条件变量在不同线程之间进行通信。但我不想阻塞我的任何线程并让它们等待特定信号,简而言之,计数器必须不断更新。

总结一下,这就是我想要实现的目标:

  1. 多个线程正在运行,不断更新它们自己的计数器。

  2. SIGALRM 已注册,它会定期通知每个线程打印其计数器

最佳答案

只需使用一个全局变量作为 SIGALRM 的计数器,在处理程序中更新,然后在例程中,检查全局计数器值是否更改,打印局部计数器并将全局计数器的值保存到局部变量

关于c - 接收信号时的线程通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49810814/

相关文章:

multithreading - Delphi如何使用线程

pthreads - pthread_exit(PTHREAD_CANCELED) 和 pthread_cancel(pthread_self()) 之间的区别

c - 在 C 中从标准输入逐个字符地读取直到 EOF

c++ - 有没有办法从 C++ 中区分文件?

c# - 为什么逻辑调用上下文不跨线程传播?

multithreading - 全线程 : Create a task wrapper/modify a task that adds some extra pre- and post processing to an alredy existing task

您能否从等待的互斥量中的不同互斥量发出条件变量信号?

c - 暂停/恢复另一个线程

c - 什么样的错误将 "errno"设置为非零?为什么 fopen() 设置 "errno"而 fputc() 不设置?

C - 结构错误内部的指针(?)