gpt4 book ai didi

c - 如何向c中的线程发送信号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:21 24 4
gpt4 key购买 nike

1-发送unix信号只能给一个进程,还是也可以给线程发送信号?

2-是否可以将线程的 tid 发送到内核模块?怎么办?

3-内核模块通过什么方式找到线程的tid,发送信号?

4-线程将有一个处理程序,它将在每个信号上运行。如果每个处理程序对应一个信号,是否存在竞争条件?可以向所有线程传递信号吗?如果同时访问处理程序会怎样?

最佳答案

Ad.1 你想从哪里发送信号?您可以使用 kill() 将信号发送到进程,并使用 pthread_kill() 将其发送到线程(但仅限于创建线程的进程)。

广告 3。在处理一个信号时,其他未决信号将排队,因此不会出现竞争条件。但是您需要将处理程序中使用的非局部变量设置为原子变量(因此当中断到来时设置此变量不会被中断)并检查哪些函数是处理程序安全的。

关于信号和线程 - 信号通常直接进入进程(只有使用 pthread_kill 才能从用户空间向线程发送信号)。如果您有多线程进程并且没有线程阻塞此信号,则信号将到达随机线程(恰好在信号到来时正在运行的线程)。如果您阻塞除一个线程之外的所有线程,那么信号将只到达这个线程。

关于c - 如何向c中的线程发送信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com