Thread affinity of user interface objects, part 3: Menus, icons, cursors, and accelerator tables

Raymond Chen


The remaining user interface objects in common use are menus, icons, cursors, and accelerator tables.

Menus do not have thread affinity. Any thread can use a menu. However, if two threads use a menu, it is the responsibility of those threads to coordinate among themselves how that menu will be used, so that one thread doesn’t modify a menu while another is busy displaying it, for example. (More on this subject later.)

Icons, cursors, and accelerator tables behave like menus. They do not have thread affinity. They are easier to manage than menus since they cannot be modified once created, so the only thing you have to worry about is not to use one after it has been destroyed.

Next time, GDI objects and an expansion on the subject of thread safety.

Raymond Chen
Raymond Chen

Follow Raymond