OBSERVER 观察者模式
观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦。
完整代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <Windows.h> 4 5 HANDLE event[2] = { 0 }; 6 7 void fun1(void *p) 8 { 9 printf("玩游戏 "); 10 WaitForSingleObject(event[0],INFINITE); 11 MessageBoxA(0, "工作中", "working", 0); 12 } 13 14 void fun2(void *p) 15 { 16 printf("听音乐 "); 17 WaitForSingleObject(event[1],INFINITE); 18 MessageBoxA(0, "工作中", "working", 0); 19 } 20 21 void look(void *p) 22 { 23 Sleep(3000); 24 printf("老板来了 "); 25 for (int i = 0; i < 2; i++) 26 { 27 SetEvent(event[i]); 28 } 29 } 30 31 void main() 32 { 33 event[0] = CreateEvent(NULL, FALSE, FALSE, "1"); 34 event[1] = CreateEvent(NULL, FALSE, FALSE, "2"); 35 _beginthread(fun1, 0, NULL); 36 _beginthread(fun2, 0, NULL); 37 _beginthread(look, 0, NULL); 38 Sleep(100000); 39 }