- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在制作一个小项目,该项目将被合并到更大的项目中。基本上它所做的是通过将线程添加到主结构来跟踪创建的线程,主结构跟踪线程的作用(其主要功能)及其 pthread_t id。另一个结构跟踪要传递给函数的数据以及 pthread_t id 存储在 threads[] 中的元素编号。它有点像米奇老鼠,它会跳来跳去,但除了需要终止线程外,它都可以正常工作。我没有出现段错误,也没有错误,程序运行良好,但是当调用 pthread_kill() 时线程没有被杀死(函数返回 0 意味着没有错误并且它工作)尽管线程继续运行直到主应用程序返回。
最佳答案
pthread_kill()
不会终止线程。与 kill()
的唯一区别是信号由指定线程处理,而不是在该线程屏蔽信号时处理(参见 pthread_sigmask()
)。像 SIGTERM
这样的信号在默认情况下仍会终止整个进程。
如果您正在考虑从信号处理程序调用 pthread_exit()
,您应该改用 pthread_cancel()
。
如果所有可能被取消的代码合作(或者调用它的代码暂时禁用取消),取消是安全的。不过,大多数图书馆并不关心这一点。
更安全的方法是不强制要求线程退出,例如通过向它发送特殊消息(如果线程正常处理消息)。
或者,不必费心杀死任何线程,只需调用 _exit()
、_Exit()
或 quick_exit()
。
关于c - pthread_kill 不会杀死线程 C linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345232/
我想确定一个特定的线程是否“存在”。 pthread_kill()似乎适合这项任务,至少根据其 man page . If sig is 0, then no signal is sent, but
问题非常简单:我的应用程序在 32 位架构上完美运行,但在 64 位架构上运行。我遇到段错误。我猜原因是执行了 pthread_kill() 调用。这是可能的还是我的假设是错误的? 最佳答案 这里有一
为什么这个线程在我杀了它之后还继续执行?? pthread_t pid; pthread_create(&pid, NULL, (func)countdown, NULL); pthread_kill
我正在使用 int s=pthread_kill(thread_arr[t], 9); 将 SIGKILL 信号发送到位于 thread_arr t 位置的线程,而不是杀死这个确切的线程我的整个程序都
GDB 告诉我 pthread_kill 导致我的程序出现段错误。基本上,我使用 pthread_kill 来检查线程是否处于事件状态或未提供其 ID。 我一直在网上搜索,发现可能是 pthread_
我有以下崩溃报告,但我无法找出此崩溃的原因。这种崩溃经常出现,但每次的模式都不同。非常感谢! Thread 0 Crashed: 0 libsystem_kernel.dylib 0x00000001
我读到 WinAPI 中的 TerminateThread() 使用起来很危险。 在 Linux 中使用 pthread_kill() 也有危险吗? 编辑:抱歉,我指的是 pthread_kill()
信号可以在任何线程或主程序本身中接收。我从主程序创建了一个辅助线程。所以我的程序中有两个线程 1. 主线程(进程本身) 2. 辅助线程。我只希望每当信号到达我的辅助线程时,它应该向我的主线程(程序)发
我对 pthread_kill() 行为有疑问。 这是我正在尝试的一个小代码: void my_handler1(int sig) { printf("my_handle1: Got sign
什么时候用pthread_cancel而不是 pthread_kill ? 最佳答案 我不会使用这两个,但这只是个人喜好。 两者中, pthread_cancel 是终止线程最安全的方法,因为该线程只
我正在尝试使用pthread_kill向特定线程发送信号。我使用 pthread_from_mach_thread_np() 获取句柄,然后使用 pthread_kill 发送信号。 这在我的其他测试
我正在尝试使用pthread_kill向特定线程发送信号。我使用 pthread_from_mach_thread_np() 获取句柄,然后使用 pthread_kill 发送信号。 这在我的其他测试
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 5 年前。 Improve
我想使用 pthread_kill api 从主线程向子线程发送信号 (SIGUSR1),但它给出了段错误。以前我使用 2.6.20 内核版本和 gcc 4.2.1 eglbc 2.5 multili
如何使用 C++ 线程模拟 pthread_kill() 函数?我早些时候问了一个关于这个的问题,但没有得到回应。 thread::native_handle() 函数在这里有帮助吗? 最佳答案 所以
我正在制作一个小项目,该项目将被合并到更大的项目中。基本上它所做的是通过将线程添加到主结构来跟踪创建的线程,主结构跟踪线程的作用(其主要功能)及其 pthread_t id。另一个结构跟踪要传递给函数
OpenGroup Unix 规范 claims pthread_kill() 是异步信号安全的。但是 Linux man 7 signal没有在相关部分列出此功能。 那么,在 Linux 上的信号处
此请求与 PThreads 以及使用条件或信号来暂停/恢复连续循环工作线程有关。 不久前,我遇到了这个问题: https://stackoverflow.com/a/23945651/6421961
我想知道我从 Crashlytics 收到的以下堆栈跟踪中是否有任何我应该关注的内容: EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x000000007becbeb
之前我问过question关于如何终止因 I/O 而阻塞的线程。考虑到一些优点,我使用了 pthread_kill() 而不是 pthread_cancel() 或写入管道。 我已经实现了使用 pth
我是一名优秀的程序员,十分优秀!