线程控制(一)

一、什么是线程

        线程有时被称为轻量级进程,是程序执行流的最小单位。线程是进程内部的一条执行序列(执行流),每个进程至少有一条执行序列:main
的执行体。进程可以通过线程库创建 N 条线程,这些新创建的线程称之为函数线程, main 函数所代表的线程为主线程。

        一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。通常意义下,一个进程由一个到多个线程组成,各个线程之间共享程序的内存空间(包括代码段、数据段、堆等)及一些进程级的资源如(打开文件和信号)。

多线程与单线程相比的优势:

1)某个操作可能会陷入长时间等待,等待的线程会进入睡眠状态,无法继续执行。多线程执行可以有效利用等待时间。

2)某个操作会消耗大量时间,如果只有一个线程,程序和用户之间的交互会中断。多线程可以让一个线程负责交互,一个线程负责计算。

3)程序逻辑本身就要求并发操作。

4)多CPU或多核计算机,本身就具备同时执行多个线程的能力,因此单线程程序无法全面地发挥计算机的全部计算能力。

5)相对于多进程应用,多线程在数据共享方面效率要高得多。


二、线程与进程的区别:
1、进程是资源分配的最小单位,线程是 CPU 调度的最小单位
2、线程是轻量级的进程
3、管理方式不同,进程是 PCB 管理,线程是由线程结构管理。


三、具体操作

线程的创建:(线程库文件的使用)pthread

int pthread_create(pthread_t *id, pthread_attr_t *attr,void* (*fun)(void*), void *arg); 


线程结束: int pthread_exit(void *); 参数可以设置线程结束状态
等待线程结束: int pthread_join(pthread_t id, void **);
可以获取到等待的线程通过 pthread_exit 设置的结束状态信息


注意:

创建出来的函数线程不同于函数调用,函数调用是这条执行流中的一部分。函数线 程是创建出一条独立的执行序列,他与主线程同时执行。

包含线程创建函数的源代码要想生成可执行文件,必须:: gcc -o pthread pthread.c -lpthread





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值