关键字: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下一个进程如何启动一个线程
|
在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

