多线程并发TCP服务器软件的实现原理与方法

1、Linux环境下的线程之间的协调与同步

一个程序如何才能同时完成多个任务?

  • 使用fork和exec同时运行多个程序。
  • 使用线程在同一个程序同时运行多个程序。

线程的同步机制:

  • 隶属同一进程的各线程协调一致地工作的机制。

UNIX/Linux三种主要线程同步机制

  • 互斥锁:提供了对共享资源的保护作用。
  • 信号量:也称为信号灯,主要用于系统中有N个资源可用的情况, 是对互斥机制的一种推广。
  • 条件变量:一种同步机制,允许线程挂起,直到共享数据上的某些条件得到满足。

2、Windows环境下的线程之间的协调与同步

Windows下的四种主要线程同步机制:临界区(Critical Section)、互斥锁(Mutex)、信号量(Semaphore)、 事件(Event)。

临界区:在多线程程序中,有些代码是共享资源,需将这些代码作为临界区。如果有多个线程试图同时访问临界区,那么在一个线程进入后,其他线程被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占。
互斥锁:保证每一次只能有一个线程获得互斥锁二得以继续执行。
**信号量:**信号量允许多个线程在同一时刻访问统一资源,但是限制了在同一时刻访问共享资源的最大线程数。信号量是内核对象,允许跨进程使用。
**事件:**事件是内核对象,具有“激发状态”和“未激发状态”。事件主要分为两类:

  • 人工重置事件:用程序手动设置。

  • 自动重置事件:一旦事件发生并被处理后,自动恢复到没有时间状态。

                         ————参考《TCP/IP网络编程基础教程》
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值