2010-12-12 102 views
0

如何使线程安全的回调函数。这个函数将被不同的线程调用来更新UI。这个回调函数将有一个HWND参数,由调用者填充。该函数将使用此HWND参数来更新GUI。 HWND对于不同的呼叫会有所不同。线程安全回调函数

请告诉我如何使这个回调线程安全。

问候。

约翰

回答

2

请告诉我,我怎样才能使这个回调线程安全的。

如果没有回调函数所要求的状态,它已经是线程安全的,除非GUI函数本身不是线程安全的(请参阅本答复的后半部分)。

如果需要状态,请在该状态下包含一个互斥锁,并在任何读取/写入访问期间锁定该互斥锁。

还有更复杂的锁范例(例如多读卡器/单写锁),但您可能不需要GUI。


另一个问题了图形用户界面(真正的Java Swing的,我不记得这是否是为Win32真的还是假的)是GUI操作通常应在一个特定的线程来执行。在win32中,这是发布和发送消息(由一个线程处理)的原因。如果你想要使用这种方法,只要你想要执行一个GUI操作,你应该检查你是否在GUI线程中(不记得如何在win32中做到这一点),或者执行PostMessage()呼叫启动特定的GUI操作。