【发布时间】:2014-02-08 20:16:56
【问题描述】:
可以在 multi-threading 中使用 sigqueue 代替 pthread_kill() ,因为我想在 sigqueue 中使用 (const union sigval value) 。我的 linux 中没有 pthread_sigqueue()。
【问题讨论】:
标签: c++ c linux pthreads posix
可以在 multi-threading 中使用 sigqueue 代替 pthread_kill() ,因为我想在 sigqueue 中使用 (const union sigval value) 。我的 linux 中没有 pthread_sigqueue()。
【问题讨论】:
标签: c++ c linux pthreads posix
在 Linux 下,可以使用gettid() 系统调用从内核中提取线程特定的pid_t,然后可以与sigqueue() 一起使用。然而,这是 Linux 特定的,并且非常不便携。
由于gettid() 很可能无法通过您的 Linux 的 libc 获得,您可能希望使用以下代码来实现它:
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>
pid_t gettid(void)
{
return syscall(SYS_gettid);
}
【讨论】: