服务器编程入门(9)多线程编程

本文介绍了服务器编程中的多线程技术,包括其快速的创建和调度特性,以及在不显著影响系统性能的情况下能创建多个线程。然而,多线程的一个缺点是同一进程的线程无法在不同CPU上并行执行。线程库在内核线程的支持下,实现了线程管理和调度,使得在不过度消耗内核资源的同时,能够利用多处理器提高性能。
摘要由CSDN通过智能技术生成
问题聚焦:
    在简单地介绍线程的基本知识之后,主要讨论三个方面的内容:
    1 创建线程和结束线程;
    2 读取和设置线程属性;
    3 线程同步方式:POSIX信号量,互斥锁和条件变量。



Linux线程概述
线程模型
程序中完成一个独立任务的完整执行序列,即一个可调度的实体。
分为内核线程和用户线程
当进程的一个内核线程获得CPU的使用权时,它就加载并运行一个用户线程,可见,内核线程相当于用户线程运行的“容器”。
一个进程可以拥有M个内核线程和N个用户线程, M<=N。

线程实现
完全在用户空间实现线程的特点:
  • 创建和调度线程都无须内核的干预,因此速度相当快。
  • 不占用额外的内核资源,很多线程不会对系统性能造成明显影响。
  • (缺点)一个进程的多个线程无法运行在不同的CPU上

完全在内核空间实现线程的优缺点则和上面的实现相反,优缺点也互换。
双层调度模式是前两种实现模式的混合体
  • 内核调度M个内核线程,线程库调度N个用户线程
  • 不会过度消耗内核资源,又可以充分利用多处理器的优势



创建线程和结束线程
基础API

创建pthread_create
定义:
#include <pthread.h>
int pthread_create ( pthread_t* thread, const pthread_attr_t* attr,
                                  void * (*start_routine)(void*) , void* arg);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值