我的应用程序使用 pthread_create() 创建了多个线程,然后尝试使用 pthread_kill(threadId, 0) 验证它们的存在。pthread_kill 每隔一段时间就会失败,并显示“没有这样的进程”......
会不会,我在 pthread_create之后太早调用 pthread_kill 了?我以为 pthread_create() 返回的 threadId 立即有效,但似乎并非总是如此......
我确实检查了 pthread_create() 本身的返回值——它没有失败......这是代码片段:
if (pthread_create(&title->thread, NULL,
process_title, title)) {
ERR("Could not spawn thread for `%s': %m",
title->name);
continue;
}
if (pthread_kill(title->thread, 0)) {
ERR("Thread of %s could not be signaled.",
title->name);
continue;
}
有时我会收到有关线程的消息,但无法发出信号...