C++ sigqueue可以与pthreads一起使用吗?

C++ sigqueue可以与pthreads一起使用吗?,c++,c,linux,pthreads,posix,C++,C,Linux,Pthreads,Posix,可以在多线程中使用sigqueue而不是多线程,因为我想在sigqueue中使用(const union sigval value)。我的linux中没有。在linux下,可以使用系统调用从内核中提取特定于线程的pid\t,然后可以与一起使用。然而,这是Linux特有的,并且非常不可移植 由于getId()很可能无法通过Linux的libc获得,您可能需要使用以下代码来实现它: #define _GNU_SOURCE #include <unistd.h> #include <

可以在多线程中使用sigqueue而不是多线程,因为我想在sigqueue中使用(
const union sigval value
)。我的linux中没有。在linux下,可以使用系统调用从内核中提取特定于线程的
pid\t
,然后可以与一起使用。然而,这是Linux特有的,并且非常不可移植

由于
getId()
很可能无法通过Linux的libc获得,您可能需要使用以下代码来实现它:

#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>

pid_t gettid(void) 
{
  return syscall(SYS_gettid);
}
定义GNU源
#包括
#包括
#包括
pid\u t getId(无效)
{
返回syscall(SYS\u gettid);
}