位置: 编程技术 - 正文
推荐整理分享Linux和Windows区别分析之线程问题(linux和windows的区别?),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux与windows主要区别,请简单阐述linux和windows的区别,linux和windows一样吗,linux和windows一样吗,linux和windows一样吗,linux和windows的区别?,linux和windows一样吗,linux和windows区别大吗,内容如对您有帮助,希望把文章链接给更多的朋友!
熟悉WIN编程的人一定知道,WIN的进程管理方式与Linux上有着很大区别,在Unix里,只有进程的概念,但在WIN里却还有一个"线程"的概念,那么Linux和WIN在这里究竟有着什么区别呢?
WIN里的进程/线程是继承自OS/2的。在WIN里,"进程"是指一个程序,而"线程"是一个"进程"里的一个执行"线索"。从核心上讲, WIN的多进程与Linux并无多大的区别,在WIN里的线程才相当于Linux的进程,是一个实际正在执行的代码。但是,WIN里同一个进程里各个线程之间是共享数据段的。这才是与Linux的进程最大的不同。
下面这段程序显示了WIN下一个进程如何启动一个线程。
在WIN下,使用CreateThread函数创建线程,与Linux下创建进程不同,WIN线程不是从创建处开始运行的,而是由 CreateThread指定一个函数,线程就从那个函数处开始运行。此程序同前面的UNIX程序一样,由两个线程各打印条信息。 threadID是子线程的线程号,另外,全局变量g是子线程与父线程共享的,这就是与Linux最大的不同之处。大家可以看出,WIN的进程/线程要比Linux复杂,在Linux要实现类似WIN的线程并不难,只要fork以后,让子进程调用ThreadProc函数,并且为全局变量开设共享数据区就行了,但在WIN下就无法实现类似fork的功能了。所以现在WIN下的C语言编译器所提供的库函数虽然已经能兼容大多数Linux/UNIX的库函数,但却仍无法实现fork。
对于多任务系统,共享数据区是必要的,但也是一个容易引起混乱的问题,在WIN下,一个程序员很容易忘记线程之间的数据是共享的这一情况,一个线程修改过一个变量后,另一个线程却又修改了它,结果引起程序出问题。但在Linux下,由于变量本来并不共享,而由程序员来显式地指定要共享的数据,使程序变得更清晰与安全。
至于WIN的"进程"概念,其含义则是"应用程序",也就是相当于UNIX下的exec了。
Linux 记录会话过程的命令 在Unix系统维护中,有时候系统工程师希望能够记录下会话的过程。如在测试一个系统功能的时候,工程师就希望将测试的步骤都一一的纪录下来。以便
Linux 后台执行程序如何操作? 在Linux下,后台执行跟windows就有写区别了,因为,我们后台执行的程式主要是通过php.exe文件通过system来实现的,但在linux下,没有php.exe文件,但是在/usr
linux Wget命令来浏览网页的方法 用adsl上网:rpm-erp-pppoe-3.2-3先删除旧版的程序rpm-ivhrp-pppoe-3.3-1.i.rpm安装最新版本安装完后执行adsl-setup命令,然后输入帐号,密码等。当要上网时执行ad
上一篇:Linux 22端口的修改方法(linux修改22端口号)
友情链接: 武汉网站建设