这么解释问题吧:
- 单进程单线程:一个人在一个桌子上吃菜。
- 单进程多线程:多个人在同一个桌子上一起吃菜。
- 多进程单线程:多个人每个人在自己的桌子上吃菜。
多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了。。。此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢。
-
对于 Windows 系统来说,【开桌子】的开销很大,因此 Windows 鼓励大家在一个桌子上吃菜。因此 Windows 多线程学习重点是要大量面对资源争抢与同步方面的问题。
-
对于 Linux 系统来说,【开桌子】的开销很小,因此 Linux 鼓励大家尽量每个人都开自己的桌子吃菜。这带来新的问题是:坐在两张不同的桌子上,说话不方便。因此,Linux 下的学习重点大家要学习进程间通讯的方法。
补充:有人对这个开桌子的开销很有兴趣。我把这个问题推广说开一下。
开桌子的意思是指创建进程。开销这里主要指的是时间开销。
可以做个实验:创建一个进程,在进程中往内存写若干数据,然后读出该数据,然后退出。此过程重复 1000 次,相当于创建/销毁进程 1000 次。在我机器上的测试结果是:
UbuntuLinux:耗时 0.8 秒
Windows7:耗时 79.8 秒
两者开销大约相差一百倍。
这意味着,在 Windows 中,进程创建的开销不容忽视。换句话说就是,Windows 编程中不建议你创建进程,如果你的程序架构需要大量创建进程,那么最好是切换到 Linux 系统。
大量创建进程的典型例子有两个,一个是 gnu autotools 工具链,用于编译很多开源代码的,他们在 Windows 下编译速度会很慢,因此软件开发人员最好是避免使用 Windows。另一个是服务器,某些服务器框架依靠大量创建进程来干活,甚至是对每个用户请求就创建一个进程,这些服务器在 Windows 下运行的效率就会很差。这"可能"也是放眼全世界范围,Linux 服务器远远多于 Windows 服务器的原因。
本文整理自我在 segmentfault 的问答。
相关推荐
在编程领域,多线程应用程序设计是至关重要的一个主题,特别是在现代计算机系统中,多核处理器的普及使得并发执行成为提升程序性能的有效手段。本文将深入探讨多线程应用程序设计的基础概念、优缺点以及实现方法,...
在计算机科学领域中,进程与线程的概念至关重要。进程是指操作系统中可并发执行的程序实例,而线程则是在进程中执行的一个控制单元,也是进程内的可调度实体。随着多核处理器的普及,多线程编程成为提高程序性能的...
- **重要性**:多线程技术在计算机科学领域扮演着至关重要的角色,尤其是在提高程序执行效率、响应性和资源利用率方面。 #### 三、多线程的基本原理 - **基本概念**: - **线程**:比进程更小的执行单元,CPU调度...
本文将深入探讨多任务的概念、进程与线程的区别以及它们在编程,特别是VC(Visual C++)环境中的应用。 首先,多任务是指计算机系统能够同时处理多个任务的能力。这种能力使得用户可以在听音乐的同时浏览网页,或者...
多线程与异步编程是现代计算机科学中非常重要的两个概念,它们都旨在提高程序的执行效率和响应速度。尽管两者有着共同的目标,但它们在本质和使用上都有着不同的特点。 首先,了解异步操作的本质是理解这一区别的...
在计算机科学中,多线程与多核编程是提高系统性能和效率的重要技术。本篇文档主要围绕这一主题展开,讲解了进程、线程以及多核环境下的并发计算。 13.1 进程与线程 13.1.1 多任务与进程 多任务处理是现代操作系统...
**进程与线程** - **进程**:是程序的一次执行过程,具有独立的地址空间和系统资源。每个进程都有自己的内存空间和其他资源,如打开的文件和系统调用表。进程是操作系统进行资源分配的基本单位。 - **线程**:是...
3. **利用多处理器提高性能**:随着多核处理器的普及,多线程编程成为充分利用硬件资源的重要手段之一。通过在不同的处理器上并行执行不同的线程,可以显著加快程序的执行速度,特别是在需要大量计算资源的任务中。 ...
进程与线程的关系中,可以发现进程拥有独立的地址空间,不同的进程之间的虚拟地址空间是相互独立的,而同一进程内的多个线程则共享相同的地址空间。这种结构让线程成为轻量级的进程,因为它们几乎不拥有系统资源,...
多线程编程技术是计算机科学中的一个重要分支,它允许多个线程同时在单个CPU或CPU核心上执行,以提高程序的执行效率和响应速度。在多线程编程中,一个进程可以创建多个线程来执行不同的任务或相同的任务,以实现并行...
操作系统是计算机科学中的核心课程,它管理并控制计算机硬件与软件资源,为用户提供高效、便捷的服务。本项目名为“非多线程操作系统课设”,显然,重点在于理解单线程操作系统的概念及其工作原理,而非现代多线程...
我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 1、假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-...
- **背景与重要性**:随着计算机技术的发展,特别是多核处理器的普及,多线程技术成为了提高软件性能的关键手段之一。在实时数据采集系统中,通过合理利用多线程技术可以显著提升数据处理的速度和准确性,特别是在...
在多核处理器的普及下,多线程已经成为实现并发执行、提高系统效率的关键技术。本文将深入探讨多线程的基本概念,以及它在实际应用中的作用。 首先,我们要理解什么是线程。线程是操作系统分配CPU时间的基本单元,...
《现代操作系统》是计算机科学领域内一本极具影响力的教材,由著名计算机科学家Andrew S. Tanenbaum编写。这本书自第二版起就广受读者欢迎,它深入浅出地探讨了操作系统的设计原理和实现技术。以下将根据书中提供的...
随着多核CPU的普及,超线程技术也在不断发展,如今已能够在多核处理器上为每个物理核心提供两个逻辑处理器,进一步提升了多任务处理和并行计算的效率。 综上所述,英特尔超线程技术是现代高性能CPU运行的重要组成...
多线程编程是现代计算机科学中的重要组成部分,尤其在多核处理器普及的今天,利用多线程进行并发处理已成为提升软件性能的常见手段。 一、多线程基础 多线程是指在一个进程中可以同时运行多个独立的执行流,每个...