我这里可以大概给你介绍一下,但对于每一种编程模型要看具体的示例是什么,而且我不可能给你罗列所有的代码,请谅解。
其实我们编程只要尽量站到比较高的层次,很多道理其实你会发现你已经懂了。
就多线程来说,我们开始设想只有两个线程(>2时是不是算数学归纳法?)那么如果两个独立的线程会发生什么呢?
1。当一个线程进入moniter(也就是说站用一个object),另一个线程只有等待或返回,而我们把返回就称为一种模式,这种模式的英文是Balking。
2。这两个线程可以是有序的执行,而不是让OS来调度,这时我们要用一个object来调度,这种模式称为Scheduler。(这个词及其含义其实OS中就有)。
3。如果这两个线程同时读一个资源,我们可以让他们执行,但如果同时写的话,你闭着眼睛都会知道可能出现问题,这时我们就要用另一种模式(Read/Write Lock)。
4。如果一个线程是为另一个线程服务的话,比如IE中负责数据传输的线程和界面显示的线程,当一个图片没有传完时,另一个线程就无法显示,至少是部分没有传完。那么这时我们要用一个模式称为生产者和消费者,英文是Producer-Consumer。
5。两个线程的消亡也可以不是完全又OS来控制的,这时我们需要给出一个条件,使得每个线程在符合条件是才消亡,也就是有序的消亡,我们称为Two-Phase Termination。
那么有这5个线程模型,基本上可以用到大多数编程任务中。我需要指出的三点是:
1。从高层次上我们可以再验证是否含盖了所有的情况。
2。其实模式不是完全固定的或者说象定律一样,而模式可以为不同的情况进行适当 的调整和组合,目的是为了简洁和高效。
3。学习模式是为了具备更好的分析问题的能力。
而似乎这些来自西方的技术,并且是目前的,我们有没有呢?其实我个人有个大胆的推测,我认为我们祖先的《孙子兵法》就是很好设计模式,因为它符合设计模式需要的基本特征,就是在特定的条件下,用某种特定的方式合理且高效的解决问题。只不过一是用在军事上,二是完备性方面我们还没研究。但我认为我们至少没有很好的扩展和进行类比式的应用,否则今天可能是我们中国人教外国人什么是设计模式。
类比的方法实际上是发明或发现的常用方法。不知能否让你感觉到其实外国的技术并不是那么的神秘,也许我们从自身的文化当中挖掘出的东西太少了。
P.S.更深一步的研究你可以参考Doug Lea. <>.
分享到:
相关推荐
### 多线程服务器的几种常用模型 #### 1. 进程与线程 在计算机科学中,**进程**和**线程**是两个重要的概念。进程是资源分配的基本单位,而线程则是调度的基本单位。每个进程都有自己的独立地址空间,这意味着不同...
OpenMP(Open Multi-Processing)是一种多线程编程模型,支持 C、C++、Fortran 等语言。OpenMP 提供了一个简单的并行编程模型,允许开发者轻松地在多核处理器上编写并行程序。 Windows 多线程编程 Windows 多线程...
多线程服务器的常见编程模型主要包括以下几种: 1. **单线程模型**:所有连接都由单一线程处理。虽然简单,但当连接数增加时,服务器性能会迅速下降,因为线程需要不断地在不同连接间切换。 2. **多线程模型**(非...
### C++09内存模型与多线程编程 #### 一、引言 随着多核处理器的普及,多线程编程成为了现代软件开发中的一个重要组成部分。C++作为一门广泛使用的编程语言,在C++09标准中引入了一系列重要的新特性,其中最显著的...
在VC++开发环境中,MFC(Microsoft Foundation Classes)库为创建多线程应用程序提供了一种高效且方便的方式。本文将深入探讨MFC如何支持多线程,并基于标题"vc多线程-mfc-大家可以看看"及描述"vc多线程-mfc-...
在计算机科学中,多线程编程模型是一种允许应用程序同时执行多个独立执行流的技术。这种模型在现代计算中广泛应用,特别是在需要高效利用多核处理器资源的系统中。本篇将深入探讨多线程编程模型,包括相关概念、操作...
4. **异步非阻塞模型(事件驱动/IO多路复用)**:这是最高效的网络编程模型之一,常用于高并发服务器。在这种模型中,线程不会因等待IO操作而被阻塞,而是通过事件循环(如epoll、kqueue或select)监控多个连接。当...
在iOS和OS X平台上,主要的多线程实现方式有以下几种: 1. **NSOperationQueue**:它是苹果推荐的多线程模型,可以方便地管理和调度任务,支持依赖关系和并发控制。 2. **GCD(Grand Central Dispatch)**:苹果...
多线程编程涉及到几个关键概念: 1. **线程同步**:当多个线程访问同一资源时,可能导致数据不一致。为此,可以使用锁(Mutex, Semaphore, Monitor等)或者`lock`关键字来确保同一时间只有一个线程访问共享资源。 2....
在IT领域,多线程是并发编程中的一个关键概念,特别是在服务器端应用和高并发系统设计中。"典型的多线程--生产和消费"这个主题,通常指的是生产者-消费者问题,这是一种经典的设计模式,用于解决如何在一个数据结构...
### AS/400 多线程编程技术详解 #### 概述 本文档旨在深入探讨AS/400系统中的多线程编程技术。AS/400是一款由IBM开发的强大业务处理平台,它支持多种编程语言和技术,包括多线程编程。随着计算机硬件性能的不断...
本文将深入探讨基于Visual C++的TCP多线程客户端-服务器结构,并以"vc socket tcp 多线程客户端--服务器结构的例子"为例进行解析。这个例子包含了一个名为"RawSocketServerExample"的文件,很可能是实现此架构的源...
在Socket编程中,多线程模型是一种常用的优化策略,能够提高服务器处理并发请求的能力。 1. **Socket编程简介** - **概念**:Socket编程即通过网络协议进行数据传输的编程,涉及到Server和Client两端,以及TCP和...
#### 七、用多线程又有几种常用的编程模型 - **生产者-消费者模型**: - 生产者线程生成数据放入队列。 - 消费者线程从队列取出数据进行处理。 - **工作窃取模型**: - 线程之间相互“偷窃”任务以提高资源利用率...
"嵌入式Linux应用程序开发第9章多线程编程" 本章主要讲解了 Linux 中的多线程编程,包括 Linux 线程的基本概念、创建及使用、属性设置、同步与互斥问题的处理等内容。通过学习本章,读者将掌握 Linux 中线程的基本...
《深入学习:Java多线程编程》是一本专注于Java并发技术的专业书籍,旨在帮助开发者深入理解和熟练运用Java中的多线程编程。Java多线程是Java编程中的核心部分,尤其在现代高性能应用和分布式系统中不可或缺。理解并...
实验二的目的是让学生深入理解嵌入式Linux环境下的多线程编程,这涉及到对线程概念、创建和管理的理解,以及如何在编程中引入线程库。线程是操作系统资源调度的基本单位,允许在一个进程中并发执行多个执行路径,...
### 玩转多线程编程 #### 前言 本文旨在深入探讨多线程编程的核心概念和技术细节,特别适合那些已经具备一定多线程编程基础并希望进一步提升技能的开发者。文中不仅覆盖了线程相关的基础知识,还介绍了高级技巧,...
QT+OpenGL多线程测试是将高性能图形渲染与Qt框架结合的一种技术应用,它通过利用多线程的优势来提升程序的运行效率。在本项目中,开发者采用了2D纹理贴图的方法,使得图像处理和显示更为高效。接下来,我们将深入...