会员注册| 我有问题 | Flash在线 | 音乐在线 | PC电子书 | 聚生网管  
·成就工程师梦想
·久久读书网
·
软件/系统技巧
中文域名 虚拟空间 SQL空间 域名空间
·
电脑问题来这里
进入论坛
教程 | 技巧 | 笔记本 | 安全资讯 | PC苹果虫 | 地方救援 | 维修资料 | FLASH | 网址 | 小游戏 | 手机 | MP3 | DVDC | 行情 | 评测 | DIY | 厂商 | 源码 | 病毒 | 恢复
[菜鸟学院] 操作系统 程序设计 网站开发 图像动画 办公软件 [故障查询] CPU 主板 硬盘 内存 显示器 打印机 光驱 显卡 [PC电子书] 软件教程 硬件技术 数据理论 网络技术
·菜鸟学院
·故障查询
·PC电子书
· Flash :
·音乐在线
·久久读书
当前位置:首页 > 菜鸟学院 > 操作系统 > Linux > 正文

Linux和Windows系统线程间的区别
   2007-11-12 21:43:21 来源: 进入论坛 添加到收藏夹
聚生网管2.2禁一切P2P下载,限带宽,封QQ聊天国内最强!



熟悉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 ); 
} 
            }

在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了。


好书推荐
电子书下载
推荐阅读
·家用喷墨打印机常见故障解决
·佳能IP1880墨盒加(填充)墨水方
·给CPU涂散热膏的正确方法
·Vista系统一些常见进程的意义解释
·开机信息诊断计算机硬件故障大全
·内存故障与分析
·主板维修方法谈
·九大方面给Win Vista系统全面提速
·实例:无线路由器经常断线故障分析
·挖掘各类显示器的无限潜能

视频教程
EasyBoot制作双系统启 EasyBoot制作WinodwsX
最新新闻
·Linux和Windows系统线程间的区别
·家用喷墨打印机常见故障解决
·佳能IP1880墨盒加(填充)墨水方法
·给CPU涂散热膏的正确方法
·Vista系统一些常见进程的意义解释
·开机信息诊断计算机硬件故障大全
·电脑点不亮,CPU不工作,如何处理?
·内存故障与分析
·主板维修方法谈
·九大方面给Win Vista系统全面提速
·路由器debug基本操作和简单配置
·实例:无线路由器经常断线故障分析
·挖掘各类显示器的无限潜能

在线音乐/FLASH
 
关于我们 | 合作媒体 | 版权声明 | 联系方式 | 意见反馈 | 广告业务 | 网站地图 | 急救中心

Copyright © 2003--2007 中国电脑援救中心版权所有
鲁ICP备05000605号