• 2024-06-23线程间通信方式
    1通信机制:互斥与同步线程的互斥通过线程的互斥锁完成;线程的同步通过无名信号量或者条件变量完成。2 互斥2.1何为互斥?       互斥是在多个线程在访问同一个全局变量的时候,先让这个线程争抢锁的资源,那个线程争抢到资源,它可以访问这个变量,没有争抢到资源的线程不
  • 2024-06-14EXCEL的函数
    一、if:判断函数1、if函数的基本用法语法:if(条件,值1,值2)如果条件的结果是真,则返回值1,否则返回值2举例:如果性别是男,则称呼为先生,否则称呼为女士公式:=IF(E2="男","先生","女士")注意:如果参数是字符串,需要用英文的双引号""2、if的嵌套语法:if(条件1,值1,if(条件2,值2,值3))如果条件1
  • 2024-06-12【C++】多线程(基于Windows以及pthread库)
    文章目录一、前言1.1进程和线程二、创建线程2.1线程函数pthread_self(void)2.2创建线程三、线程退出3.1线程函数pthread_exit()四、线程回收4.1线程函数pthread_join()4.2线程数据回收五、线程分离5.1线程函数pthread_detach()六、C++线程类七、线程同
  • 2024-06-07生产消费模型
    一、生产消费者模型1.1、例子引入        我们在日常生活中,一般都是通过超市,集市等场所,来购买日常用品,而不会直接向生产商进行购买。超市则会统一向各个生产商批发商品,然后售卖给人们。        如果我们直接去供货商那里买东西,那我们只会要很少的商品,供货商
  • 2024-06-07go cond
      cond:packagemainimport("fmt""sync""time")funcmain(){varmusync.Mutexcond:=sync.NewCond(&mu)varreadyboolgofunc(){time.Sleep(time.Second)//模拟一些工作
  • 2024-06-06基于Linux操作系统的生产消费者队列封装(C++)
    一.先前代码及实现(在该篇中会用到)1.基于Linux操作系统的锁的封装-CSDN博客2.基于linux操作系统的线程封装(可实现任意传递任意类型任意个数的参数)-CSDN博客二.生产消费者模型    在一个多线程的进程中,通常存在如下关系生产者和消费者,其中生产者负责生产资源(产生任务
  • 2024-06-03OPEN_CV多线程线程池管理
    两种自旋锁的设置操作系统级别自旋锁的设置,例如在C++11及以后的版本中,自带线程管理库,可以定义为:defineCV_YIELD()std::this_thread::yield(),此时进入CV_YIELD(),线程释放CPU,线程被阻塞,等待被唤醒.CPU级别的自旋锁的设置,与使用的CPU架构有关,以X86为例,X86
  • 2024-06-01互斥锁与条件变量学习与应用小结
    互斥锁,也叫互斥量。有以下几个显著的特点:唯一性:互斥锁保证在任何给定的时间点,只有一个线程可以获得对临界区资源的访问权。如果一个线程锁定了一个互斥量,在它解除锁定之前,没有其他线程可以锁定这个互斥量。原子性:锁定和解锁互斥锁的操作是原子的,这意味着操作系统(或pthread函
  • 2024-05-31使用条件量和互斥锁实现线程的同步以及临界资源的互斥访问
    /********************************************************************** name :* function:主线程需要创建2个子线程之后主线程终止,此时进程中有2个子线程A和B,此时进程中有一个临界资源fag,子线程A获取触摸屏坐标并判断坐标值是否在LCD屏的左上角,如果坐标范围满足
  • 2024-05-31进程控制(互斥锁)
    进程控制(互斥锁)目录进程控制(互斥锁)头文件全局变量234验证头文件/********************************************************************** name :* function:主线程需要创建2个子线程之后主线程终止,此时进程中有2个子线程A和B,此时进程中有一个临界资源fag,子线程
  • 2024-05-27三元运算符生成器 UDF
     UDFsUserDefinedFunctions|ClickHouseDocshttps://clickhouse.com/docs/en/sql-reference/functions/udf defgen_sql_zone_if(range_list,field='cnt',group_val_flag='g'):"""[0,2)[2,3)[3,7)与if函数相同。C
  • 2024-05-27线程
    多线程线程并发问题死锁4个必要条件以及解决方案互斥:一般不会破坏互斥条件。请求保持:将申请所有共享资源当成一个原子操作。不可剥夺:当线程申请不到共享资源时,释放自己持有所有共享资源。循环等待:可以顺序申请资源来解决。条件变量:需要用互斥锁一起使用//1.初始化pth
  • 2024-05-26线程池(C++)
    个人主页:Lei宝啊 愿所有美好如期而遇线程池实现线程类#pragmaonce#include<pthread.h>#include<iostream>#include<vector>#include<string>#include<cstdlib>#include<cstring>#include<functional>#include<unistd.h>#in
  • 2024-05-11go channel ->同步
    通道并非用来取代锁,各有不同使用场景。通道解决高级别逻辑层次并发架构,锁则用来保护低级别局部代码安全。●竟态条件:多线程同时读写共享资源(竟态资源)。●临界区:读写竟态资源的代码片段。●互斥锁:同一时刻,只有一个线程能进入临界区。●读写锁:写独占(其他读写均被阻塞),读共享。●信号
  • 2024-04-23GO中的sync.Cond
    条件变量是基于互斥锁的,它必须基于互斥锁才能发挥作用,条件变量的初始化离不开互斥锁,并且它的方法有点也是基于互斥锁的//使当前goroutine进入阻塞状态,等待其他goroutine唤醒func(c*Cond)Wait(){}//唤醒一个等待该条件变量的goroutine,如果没有goroutine在等待,则该方法会立
  • 2024-04-16SAP-修改销售订单税额
    SAP-修改销售订单税额用户需要通过接口实现,修改行上的MWSI或MWST税额(两个不会同时存在),前台通过事务码VA02可以直接修改如图示字段。观察字段名称,需要修改字段为定价值(KOMV-KWERT),相关字段有条件金额或百分比(KOMV-KBETR),条件基值(KOMV-KAWRT)。通过BAPI_SALESORDER_CHANG
  • 2024-04-0830_多线程
    多线程多线程简介​ 线程,是一种允许一个正在运行的程序同时执行不止一个任务的机制。不同线程看起来是并行运行的;Linux操作系统对线程进行异步调度,不断中断它们的执行以给其它线程执行的机会。​ 线程与进程的区别:线程是进程中的一个独立并发执行的路径,进程退出时,线程也会退
  • 2024-04-04多线程常用函数
    在Linux多线程编程中,有一些常用的函数和相关概念。这里做个记录方便查找:pthread_create:创建线程。该函数的原型为intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg),其中thread是用于存储新线程标识符
  • 2024-04-04多线程(2)-线程同步条件变量
    在Linux多线程编程中,条件变量是一种用于线程间同步的重要机制。它通常与互斥锁结合使用,用于解决多个线程竞争共享资源的问题。条件变量允许一个线程在等待某个条件变为真时阻塞,并且在另一个线程改变条件并通知时恢复执行。这个玩意跟内核等待队列差不多意思。 在Linux多线
  • 2024-04-04简易线程池实现
    程序中,频繁地调用pthread_create函数创建线程,非常浪费时间,尤其在服务器端的时候,多线程的使用情况下频繁启用线程和释放线程资源,这样也会影响程序的运行效率。可以先在服务器空闲的时候先创建多个线程,我们先在线程函数里面使用pthread_cond_wait将其休眠,有任务过来的时候使用pthre
  • 2024-03-28【Linux】线程同步{死锁/线程同步相关接口/由浅入深理解线程同步}
    文章目录1.死锁1.1概念1.2死锁的必要条件2.线程同步相关接口2.1pthread_cond_init/destroy()2.2intpthread_cond_wait2.3linux下的条件变量及其作用2.4intpthread_cond_signal/broadcast();2.5Linux下阻塞和挂起的异同2.6阻塞,挂起,和进程切换的关系3.由浅入深理解线
  • 2024-03-19【Linux】 生产消费者模型
    线程同步同步: 在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,这就叫做同步(饥饿问题:某些线程无法得到资源而长时间无法执行,常见的就是申请不到锁)竞态条件:因为时序问题,而导致程序异常,我们称之为竞态条件。单纯的加锁会引起问题。如
  • 2024-01-31C++ 使用单调时钟按一定时间间隔执行任务
    使用condition_variable实现定时执行任务遇到一个开发任务,需要按一定的时间间隔执行任务,本来是一个简单的功能,直接使用condition_variable就可以了最开始是直接使用condition_variable实现的定时触发机制,代码的大致实现类似于:#include<condition_variable>#include<chrono
  • 2024-01-28锁 条件变量 信号量
    锁-条件变量-信号量用一个例子引入,用于输出嵌套深度不超过n的括号序列。voidTproduce(){while(1){mutex_lock(&lk);if(!CAN_PRODUCE){cond_wait(&cv,&lk);}printf("(");count++;cond_signal(&cv);mutex_unlock(&lk);}}
  • 2024-01-18MySQL并行复制死锁源码解析
    最近一个MySQL5.7.21备库告警当天的备份失败,登录上去看的时候发现前一天的备份任务还没有结束,通过查看日志发现无法备份成功的原因是一直无法获取FTWRL锁,登录MySQL查看会话状态发现其中几个复制worker一致处于异常状态,下发STOPSLAVE命令时命令也一直被卡住,当时的会话状态如下: