Linux之unbuntu线程学习(一)

Linux之unbuntu线程学习(一)认识线程 线程是操作系统能够进行运算调度的最小单位 它被包含在进程之中 是进程中的实际运作单位 一条线程指的是进程中一个单一顺序的控制流 一个进程中可以并发多个线程 每条线程并行执行不同的任务 线程包含了表示进程内执行环境必须的信息 其中包括进程中表示线程的线程 ID 一组寄存器值 栈 调度优先级和策略 信号屏蔽字

大家好,我是讯享网,很高兴认识大家。

认识线程

        线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程包含了表示进程内执行环境必须的信息,其中包括进程中表示线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno常量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈以及文件描述符。

        在Unix和类Unix操作系统中线程也被称为轻量级进程,但轻量级进程更多指的是内核线程,而把用户线程称为线程。

        "进程——资源分配的最小单位,线程——程序执行的最小单位"        

需要掌握:

多线程开发的最基本概念主要包含三点:线程,互斥锁,条件。其中,线程操作又分线程的创建,退出,等待 3 种。

互斥锁则包括 4 种操作,分别是创建,销毁,加锁和解锁。

条件操作有 5 种操作:创建,销毁,触发,广播和等待。其他的一些线程扩展概念,如信号灯等,都可以通过上面的三个基本元素的基本操作封装出来。


讯享网

线程创建、等待及退出

需包含<pthread.h>

末尾用while卡死防止主程序执行完退出而导致线程退出。

该行while可用线程等待API替代:

pthread_join(&t1,NULL);

讯享网

线程退出API使用(返回整型数)

线程退出API使用(返回字符串)

线程共享内存空间:即不同线程可以操作同一个全局变量。

讯享网#include <stdio.h> #include <pthread.h> #include <unistd.h> //int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg); // 返回:若成功返回0,否则返回错误编号 int g_data=0; void *func1(void *arg) { printf("t1:%ld thread is create\n",(unsigned long)pthread_self()); printf("t1:param is %d\n",*((int *)arg)); while(1){ printf("t1:%d\n",g_data++); sleep(1); if(g_data==3)//随缘达成条件,因为内存共享。=3时处于别的线程 pthread_exit(NULL); } } void *func2(void *arg) { printf("t2:%ld thread is create\n",(unsigned long)pthread_self()); printf("t2:param is %d\n",*((int *)arg)); while(1){ printf("t2:%d\n",g_data++); sleep(1); } } int main() { int ret; int param=100; pthread_t t1; pthread_t t2; ret = pthread_create(&t1,NULL,func1,(void *)&param); if(ret==0) { printf("main:creat t1 success\n"); } ret = pthread_create(&t2,NULL,func2,(void *)&param); if(ret==0) { printf("main:creat t2 success\n"); } printf("main:%ld\n",(unsigned long)pthread_self()); while(1){ printf("main:%d\n",g_data++); sleep(1); } pthread_join(t1,NULL); pthread_join(t2,NULL); return 0; } 
小讯
上一篇 2025-03-19 13:09
下一篇 2025-02-07 10:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120999.html