windows多线程编程实现 简单(1)
内容:实现win32下的最基本多线程编程
使用函数:
实现代码:线程IMM_PCentry和Def_DeferredTaskEntry交替运行。本程序并未实现同步,只是简单的多线程操作。windows多线程编程
未定义#define SYN时打印结果如下

index为两个线程的共享内存变量。
Def_DeferredTaskEntry线程第一次结束后Count = Count + 1 = 1;
IMM_Pcentry线程开始, 执行完 index = index + 1; 线程被Def_DeferredTaskEntry抢占IMM_Pcentry上下文保存了index = 2的值;
Def_DeferredTaskEntry线程开始执行,执行到打印hello 7后,执行到index = index + 1,Def_DeferredTaskEntry线程又被IMM_Pcentry线程抢占,Def_DeferredTaskEntry线程保存线程上下文,包括index = 8;
继续执行上次线程IMM_Pcentry执行的地方,恢复上下文环境,当时保存的是index = 2的值,此时被打印出来。线程IMM_Pcentry继续正常执行。
可以发现,正是因为线程的不断切换,导致index不是每次都加一变化。windows多线程编程
为了达到index正常加1的目的,于是利用信号量来实现线程的控制。增加#define SYN宏定义

可以看到打印结果,两个线程执行顺序得到了控制。注意这里并不是通过加锁来得到想要得结果。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-49701-1.html
我一礼拜喝三次左右
要不要那么帅啦
拿炮轰
蛆是苍蝇的幼虫