#define RES_SIGNAL SIGUSR2 int gs_signal_send(ThreadId thread_id, int signo, int nowait) { 参数检查……; // 屏蔽用户信号,防止信号重入。 sigset_t old_sigset = gs_signal_block_sigusr2(); // 信号作为模拟信号发送给目标线程thread_id code = gs_signal_set_signal_by_threadid(thread_id, signo); // 给目标线程发送 SIGUSR2信号,等待目标信号处理模拟信号。 code = gs_signal_thread_kill(thread_id, RES_SIGNAL); // 取消屏蔽用户信号,允许信号继续进入。 gs_signal_recover_mask(old_sigset); return code; }