Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c语言中向线程发送信号?_C_Linux_Multithreading_Signals_Driver - Fatal编程技术网

如何在c语言中向线程发送信号?

如何在c语言中向线程发送信号?,c,linux,multithreading,signals,driver,C,Linux,Multithreading,Signals,Driver,1-只能向进程发送unix信号,还是也可以向线程发送信号 2-是否可以将线程的tid发送到内核模块?怎么做 3-内核模块可以通过什么方式找到线程的tid来发送信号 4-线程将有一个处理程序,该处理程序将在每个信号上运行。如果每个处理程序对应一个信号,是否存在竞争条件? 是否可以向所有线程传递信号?如果所有人都一次访问处理程序,会发生什么情况?Ad.1您想从哪里发送信号?您可以使用kill()向进程发送信号,也可以使用pthread\u kill()将信号发送到线程(但只能从创建线程的进程发送)

1-只能向进程发送unix信号,还是也可以向线程发送信号

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

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

4-线程将有一个处理程序,该处理程序将在每个信号上运行。如果每个处理程序对应一个信号,是否存在竞争条件?
是否可以向所有线程传递信号?如果所有人都一次访问处理程序,会发生什么情况?

Ad.1您想从哪里发送信号?您可以使用
kill()
向进程发送信号,也可以使用
pthread\u kill()
将信号发送到线程(但只能从创建线程的进程发送)

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


关于信号和线程-信号通常直接到达进程(只有使用
pthread\u kill
才能从用户空间向线程发送信号)。若你们有多线程进程,并且并没有一个线程阻止了这个信号,那个么这个信号将到达随机线程(当信号到达时,这个线程正在运行)。如果您阻止除一个线程之外的所有线程,那么信号将只到达这一个线程。

Ad.1您想从哪里发送信号?您可以使用
kill()
向进程发送信号,也可以使用
pthread\u kill()
将信号发送到线程(但只能从创建线程的进程发送)

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

关于信号和线程-信号通常直接到达进程(只有使用
pthread\u kill
才能从用户空间向线程发送信号)。若你们有多线程进程,并且并没有一个线程阻止了这个信号,那个么这个信号将到达随机线程(当信号到达时,这个线程正在运行)。如果您阻止除一个线程之外的所有线程,那么信号将只到达这一个线程。

例如,请参阅并指定环境(线程可以以不同方式实现)。也许可以添加内核标记?例如,请参阅并指定环境(线程可以以不同方式实现)。也许添加内核标签?