Linux——线程

本文详细介绍了线程同步中的三种主要机制:信号量、互斥锁及条件变量,并对比了信号量与互斥锁的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



线程

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

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才运行。

线程与进程的区别

  1. 进程是资源分配的最小单位,线程是cpu调度的最小单位。

  2. 线程是轻量级的进程

  3. 管理方式不同,进程时PCB管理,线程是由线程结构管理。

线程间同步的控制方式:

1.信号量线程的信号量与进程间通信中使用的信号量的概念是一样的,         只是线程同步是控制线程执行和访问临界区域的方法。

  获取或创建:

           Int sem_init(sem_t*sem,intshared,int value);

  P 操作: int sem_wait(sem_t *sem);

  V 操作: int sem_post(sem_t*sem);

  删除:   intsem_destroy(sem_t * sem);

 

2.互斥锁:

                   概念:完全控制临界资源,如果一个线程完成加锁状态,则其他线程无论如何都将无法在完成加锁,也就是无法对临界资源进行访问。

        就像使用打印机打印东西时,别人刚好也打印,如果不做处理的话,打印出来的东西肯定错乱。因此需要互斥锁来解决。

        初始化:

Int pthread_mutex_lock(pthread_mutex_t*mutex,

pthread_mutex_arr_t * attr);

        加锁:

intpthread_mutex_lock(pthread_mutex_t*mutex);//阻塞

                                  int pthread_mutex_trylock(pthread_mutex_t*mutex);//非阻塞

        解锁:        intpthread_mutex_unlock(pthread_mutex_t*mutex);

        释放:       Intpthread_mutex_destroy(pthread_mutex_t*mutex);



     

3.条件变量


概念:条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起,另一个线程使条件成立(给出条件成立信息),为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。


静态创建:


         Pthread_cond_t cond =PTHREAD_COND_INITALIZER;


动态创建:


         Int pthread_cond_init(pthread_cond_t*cond,


pthread_condattr_t*cond_attr);


   注销:


            Int pthread_cond_destroy(pthread_cond_t*cond);


      头文件为:#include<pthread.h>;


 


 


信号量与互斥锁的区别:


信号量不一定是锁定某一个资源,而是流程上的概念,比如:有AB两个线程,B线程要等A线程完成某一任务以后在进行自己的下面的操作,这个任务不一定是锁定某一资源,还可以是进行一些计算会处理数据之类。而线程互斥量则是锁住某一资源的概念,在锁定期间其他线程无法对被保护的数据进行操作。





         

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值