sigqueue 可以与 pthreads 一起使用吗?

Can sigqueue be used with pthreads?

本文关键字:一起 pthreads sigqueue      更新时间:2023-10-16

可以在多线程中使用sigqueue而不是pthread_kill(),因为我想在sigqueue中使用(const union sigval value)。我的 Linux 中没有pthread_sigqueue()

在 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);
}