2011-05-03 58 views
1

在Windows中尤其如此,如果事件是信号线程将退出。当事件发生时,这是什么意思发信号如果一个事件发出信号,这是什么意思?

+1

你可能会混淆一个Windows事件对象与POSIX信号的信号?那些是完全不同的东西。事件对象是线程间同步对象,与信号量不同,您可以通过同样的方式获取和释放信号(“信号”)。没有理由为什么线程应该退出。 – Damon 2011-05-03 08:35:34

+0

@ Damon,如果主线程死了,子线程会退出吗? – gdb 2011-05-03 08:59:14

+0

我会回答“否”,但正确的答案是“是”。不要依赖这样的事情发生。使其他线程以受控,定义的方式退出。信号线程并让它们返回,不要杀死它们,等待线程退出,并清理已分配的内存。虽然这通常不是必需的,但无论如何都要这样做。如果你有习惯于懒惰的方式,迟早你会发现自己处于调试噩梦,一旦遇到“无论如何工作”的假设不成立的情况。 – Damon 2011-05-03 09:07:00

回答

1

首先,您必须了解事件是什么。 UI或程序化操作的任何性能都可以称为事件。例如,单击鼠标按钮或按下键盘按键等。

现在,发出事件表示发生此类事件。

+0

尽管技术上属实,但OP正在讨论[在Windows API中称为“事件”的同步原语(http://msdn.microsoft.com/zh-cn/library/ms682655.aspx),而不是事件驱动节目。 – 2011-05-03 09:13:42