注册一个新的线程处理程序,如pthread_atfork或atexit

时间:2015-09-20 13:37:57

标签: c linux multithreading unix posix

我有一个monitor /(看门狗类线程)线程,用于所有线程的查询性能统计。来自/ proc / self / tasks的线程的线程查询列表创建列表后,除非创建新线程或退出旧线程,否则我不想再次读取/ proc / self / tasks。其他线程不知道这个线程,因此他们无法创建pthread_key以在退出时获得回调,或者他们无法在产生时在线程队列中添加新条目。

我正在寻找api,如pthread_atfork或atexit for threads。

1 个答案:

答案 0 :(得分:1)

  

我正在为线程寻找像atfork / pthread_atfork [...]这样的api。

没有。

您需要自己设置簿记。

编写一个包装线程函数,该函数传递给pthread_create()的每次调用,并设置cleanup-pusher / -popper-stuff。作为pthread_create()的参数,你传递一个指向你的“真实”线程函数的指针,然后在包装“被调用”pthread_cleanup_push()之后调用它。