RSS
热门关键字:  几款非主流QQ头像  数字的颜色  峡谷攻防战  依然非主流QQ头像  QQ卡通可爱头像

Linux和Windows系统线程间的区别

来源: 作者: 时间:2008-03-29 点击:

关键字:Linux和Windows系统线程间的区别 Linux操作系统下修改IP、DNS等网络配置 Linux操作系统出现严重故障后的救援模式 Linux操作系统中的FTP客户端 解决Linux和Windows双系统引导问题 希望Windows 7系统出现的七个变化 正x86安装版MAC OSX系统应用问答集锦 苹果机中如何安装Windows系统

熟悉WIN32编程人一定知道WIN32进程管理方式与Linux上有着很大区别在UNIX里只有进程概念但在WIN32里却还有一个"线程"概念那么Linux和WIN32在这里究竟有着什么区别呢?

WIN32里进程/线程继承自OS/2在WIN32里"进程"指一个程序而"线程"一个"进程"里一个执行"线索"从核心上讲 WIN32多进程与Linux并无多大区别在WIN32里线程才相当于Linux进程一个实际正在执行代码WIN32里同一个进程里各个线程之间共享数据段这才与Linux进程最大不同

下面这段程序显示WIN32下一个进程如何启动一个线程

int g; DWORD WINAPI ChildProcess( LPVOID lpParameter ){ int i; for ( i = 1; i <1000; i ++) { g ++; printf( "This is Child Thread: %d\n", g ); } ExitThread( 0 ); }; void main() { int threadID; int i; g = 0; CreateThread( NULL, 0, ChildProcess, NULL, 0, &threadID ); for ( i = 1; i <1000; i ++) { g ++; printf( "This is Parent Thread: %d\n", g ); }             }
 

天地广owide.com

在WIN32下使用CreateThread函数创建线程与Linux下创建进程不同WIN32线程不从创建处开始运行由 CreateThread指定一个函数线程就从那个函数处开始运行此程序同前面UNIX程序一样由两个线程各打印1000条信息 threadID子线程线程号另外全局变量g子线程与父线程共享这就与Linux最大不同之处大家可以看出WIN32进程/线程要比Linux复杂在Linux要实现类似WIN32线程并不难只要fork以后让子进程调用ThreadProc函数并且为全局变量开设共享数据区就行但在WIN32下就无法实现类似fork功能所以现在WIN32下C语言编译器所提供库函数虽然已经能兼容大多数Linux/UNIX库函数但却仍无法实现fork

对于多任务系统共享数据区必要但也一个容易引起混乱问题在WIN32下一个程序员很容易忘记线程之间数据共享这一情况一个线程修改过一个变量后另一个线程却又修改结果引起程序出问题但在Linux下由于变量本来并不共享而由程序员来显式地指定要共享数据使程序变得更清晰与安全

至于WIN32"进程"概念其含义则"应用程序"也就相当于UNIX下exec

天地广owide.com

上一篇:Linux下的C编程实战之5
下一篇:没有了
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表