我有一个monitor /(看门狗类线程)线程,用于所有线程的查询性能统计。来自/ proc / self / tasks的线程的线程查询列表创建列表后,除非创建新线程或退出旧线程,否则我不想再次读取/ proc / self / tasks。其他线程不知道这个线程,因此他们无法创建pthread_key以在退出时获得回调,或者他们无法在产生时在线程队列中添加新条目。
我正在寻找api,如pthread_atfork或atexit for threads。
答案 0 :(得分:1)
我正在为线程寻找像atfork / pthread_atfork [...]这样的api。
没有。
您需要自己设置簿记。
编写一个包装线程函数,该函数传递给pthread_create()
的每次调用,并设置cleanup-pusher / -popper-stuff。作为pthread_create()
的参数,你传递一个指向你的“真实”线程函数的指针,然后在包装“被调用”pthread_cleanup_push()
之后调用它。