我已经编写了一个应用程序,该应用程序创建了一个线程并遇到while循环。
在产生线程之后的应用程序中,我已用fork()
覆盖了pthread_atfork()
系统调用。
[当调用fork
时,将调用prepare
函数调用,该函数将取消线程,并在生成子进程之后再次生成同一线程。]
我在上述逻辑中遇到问题,当将相同的代码编译到不同的目标时,pthread_join()
中会出现挂断。
fork()
覆盖pthread_atfork()
。fork()
系统调用时,prepare函数使用pthread_cancel
取消正在运行的线程,并应用pthread_join()
来检查线程是否终止。此处出现问题,pthread_join()
不返回。
在一个特定的目标环境中观察到上述行为。
我有些疑问
pthread_cancel()
可以安全打电话吗?pthread_cancel()
是否立即取消线程?