多线程与CPU调度:深入解析与对比
多线程信号处理与线程管理
在多线程应用中,信号处理是一个关键环节。需要注意的是,sigwait(3)、sigwaitinfo(2)和sigtimedwait(2)这些API无法等待内核同步生成的信号,像SIGFPE和SIGSEGV这类表示某种故障的信号,只能通过signal(2)或sigaction(2)以常规异步方式捕获,而sigaction(2)系统调用是更优选择。
另外,在多线程应用中屏蔽信号时,不要使用sigprocmask(2)API,因为它不是线程安全的,应使用pthread_sigmask(3)库例程。
以下这些API可用于向进程内的线程发送信号:
-pthread_kill(3):用于向同一进程内的特定线程发送信号。
-tgkill(2):用于向给定线程组内的特定线程发送信号。
-tkill(2):是tgkill已弃用的前身。
不过,通过pthreads取消框架终止线程比发送信号要好得多。
多进程与多线程模型对比
多进程(单线程)和多线程模型各有优劣,以下是详细对比: