• 2024-09-12线程---实践与技巧(C语言)
            目录一、引言二、线程基础  1.线程概念  2.线程库三、线程的创建与终止  1.创建线程  2.终止线程四、线程同步与互斥  1.互斥锁(Mutex)  2.条件变量(ConditionVariable)五、线程间的通信六、总结               
  • 2024-09-12Linux环境C语言pthread多线程
    pthread线程库介绍pthread库是POSIX线程(PortableOperatingSystemInterfaceforuniXthreads)库的简称,它提供了一套创建和管理线程、以及线程间同步的机制。pthread库是UNIX系统上实现多线程编程的一个标准接口,也被广泛支持在类UNIX系统(Linux和macOS)中。头文件#in
  • 2024-09-08【Linux修行路】基于阻塞队列的生产消费者模型
    目录⛳️推荐一、生产消费者模型1.1生产消费者模型的解藕特性二、基于BlockingQueue的生产消费者模型2.1单生产单消费模型2.2伪唤醒、误唤醒造成的问题2.3基于任务的多生产多消费模型⛳️推荐前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一
  • 2024-09-07使用libmpg123加alsa实现MP3的播放/暂停,切换,模式选择,C语言3
    note:使用多线程的方式MP3实现播放器,其中用到libmpg123,以及asound库,解码用到libmpg123,播放用到alsa,以下为c语言例程源码#include<alsa/asoundlib.h>#include<mpg123.h>#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#include&l
  • 2024-09-04【Linux修行路】多线程——互斥量
    目录⛳️推荐一、多线程模拟抢票二、加锁——互斥量2.1pthread_mutex_init——初始化互斥量2.2pthread_mutext_destroy——销毁一个互斥量2.3pthread_mutex_lock——加锁2.4pthread_mutex_trylock——非阻塞的申请锁2.4pthread_mutex_unlock——解锁2.5定义一个
  • 2024-09-03Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc
    这个是一个gnu的extension,glibc会使用这个功能,标记即将被淘汰的符号,产生链接时的警告,比如:/*WhenareferencetoSYMBOLisencountered,thelinkerwillemitawarningmessageMSG.*//*Wewantthe.gnu.warning.SYMBOLsectiontobeunallocated.*/#defin
  • 2024-09-01C++:std::thread 和 pthread
            在C++中,线程的实现主要有两种方式:使用C++11标准库中的std::thread和POSIX线程库(pthread)。这两种方式各有优缺点,适用于不同的场景。以下是对这两种方式的详细比较和示例代码。std::thread示例代码#include<iostream>#include<thread>#include<chrono>
  • 2024-08-31进程间的通信(无名管道)
    进程间通信IPCInterProcessCommunication1.进程间通信方式1.早期的进程间通信:无名管道(pipe)、有名管道(fifo)、信号(signal)2.systemVPIC:共享内存(sharememory)、信号灯集(semaphore)、消息队列(messagequeue)3.BSD:套接字(socket)2.无名管道2.1特点只
  • 2024-08-31IO进程练习:请在linux 利用c语言编程实现两个线程按照顺序依次输出”ABABABAB......“
    例如:a线程输出”A”之后b线程输出”B”,然后a线程输出“A”,再b线程输出”B”,之后往复循环。【1】使用信号量实现代码展示:#include<stdio.h>#include<pthread.h>#include<string.h>#include<semaphore.h>#include<unistd.h>//定义两个全局信号量,实现同步机制se
  • 2024-08-30线程(函数接口、同步、互斥、条件变量)
    线程Thread1.什么是线程1.1概念线程是一个轻量级的进程,为了提高系统的性能引入线程。线程和进程是参与统一的调度。在同一个进程中可以创建的多个线程,共享进程资源。(Linux里同样用task_struct来描述一个线程)1.2进程和线程区别相同点:都为系统提供了并发执行的
  • 2024-08-29day07(IO进程)线程 Thread
    目录一.什么是线程1. 概念2. 进程和线程区别3.线程资源二.函数接口1.创建线程:pthread_create2. 退出线程:pthread_exit3.回收线程资源 pthread_join练习:输入输出,quit结束三.同步1.概念2.同步机制3. 函数接口练习:用信号量实现输入输出quit结束
  • 2024-08-29io进程----线程
    目录一丶概念二丶进程和线程的区别三丶资源四丶函数接口1.创建线程 pthread_create2.退出线程pthread_exit3.获取线程IDp_threadself​编辑4.回收线程资源五丶线程同步5.1概念5.2信号量5.3信号量的分类5.4函数接口1.初始化信号量2.申请资源3.释放资源
  • 2024-08-29io 互斥
    概念互斥:多个线程在访问临界资源时,同一时间只能一个线程访问临界资源:一次仅允许一个线所使用的资源临界区:指的是一个访问共享资源的程序片段互斥锁(mutex):通过互斥锁可以实现互斥机制,主要用来保护临界资源,每个临界资源都由一个互斥锁来保护,线程必须先获得互斥锁才能访问临
  • 2024-08-28系统编程-多线程1
    多线程1目录多线程1引入认识线程1、线程的概念2、线程的优缺点3、进程和线程的区别和联系4、什么时候选进程,什么时候选线程?线程相关函数1、创建线程2、线程的退出函数3、阻塞等待线程退出并回收资源4、获取自身线程号的函数5、主动取消一个线程6、注册线程退出
  • 2024-08-27线程:线程创建pthread_create,线程间的同步与互斥
    线程的创建 线程的创建是通过调用pthread_create函数来实现的。该函数的原型如下:intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg);参数说明:thread:指向pthread_t类型的指针,用于存储新线程的ID。attr:指向
  • 2024-08-26操作系统终止线程
    终止线程方法1:从线程入口函数中return,主线程除外。方法2:调用pthread_exit函数。voidpthread_exit(void*retval);retval-和线程过程函数的返回值语义相同。注意:在任何线程中调用exit函数都将终止整个进程。问题:主线程结束,子线程是否会跟着一起结束?主线程结束,并不会
  • 2024-08-25pthread线程
    线程概念线程是轻量级进程,一般是一个进程中的多个任务。进程是系统中最小的资源分配单位进程是操作系统中资源分配的最小单位。每个进程都有自己的地址空间,并且拥有独立的资源(如内存、文件句柄等)进程之间通常是相互独立的,彼此不能直接访问对方的内存空间线程是系统中
  • 2024-08-25IO与进程
    #include<stdio.h>fopen("文件路径","打开方式");//打开文件标准iofclose(文件流);//关闭文件标准iofgetc(文件流);//读一个字符标准iofgutc(‘要写的字符’,文件流);//写一个字符标准iofgets(存放字符串首地址(如buf),大小,文件流);//读一串字符标准iofguts(存放字符
  • 2024-08-24【C语言】进程和线程详解
    目录C语言进程和线程详解1.进程和线程的对比2.进程的基本概念2.1进程的定义2.2进程的特点2.3进程的生命周期3.进程管理3.1进程创建3.2进程间通信(IPC)3.2.1管道(Pipe)4.线程的基本概念4.1线程的定义4.2线程的特点5.POSIX线程库5.1引用头文件5.2创建线程
  • 2024-08-23dlopen 加载使用了std::thread 的so 导致crash的问题分析
    c++11的的createimplement是在thread.cc中实现的,这意味着创建代码在libstdc++.so中,创建代码需要使用与平台有关的apigcc(g++isapartofgcc)的预期:没有调用的thread的代码,不会产生对pthread的依赖,更重要的,不同配置的gcc的线程模型是不同的,依赖库也不同(即不一定是pthrea
  • 2024-08-22操作系统-线程
    一、线程介绍线程是操作系统能内够进行运算、执行的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。​ 总结:线程是进程的一部分,是进程内负责执行的单位,进程是由资源单位(
  • 2024-08-22Linux下的分布式锁
    一:什么是分布式锁1、定义        在分布式系统中,一个应用部署在多台机器当中,在某些场景下,为了保证数据一致性,要求在同一时刻,同一任务只在一个节点上运行,即保证某个行为在同一时刻只能被一个线程执行;在单机单进程多线程环境,通过锁很容易做到,比如mutex、spinlock、
  • 2024-08-21/* 线程读取循环队列*/
    /*线程读取循环队列*/#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<unistd.h>#defineQUEUE_SIZE5typedefstruct{intdata[QUEUE_SIZE];intfront;intrear;pthread_mutex_tlock;}CircularQueue
  • 2024-08-21线程常用api
    线程常用apipthread_create该api用于创建一个新线程intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg)pthread_t*thread:指向线程标识符的指针,用于存储新创建的线程的线程标识符constpthread_attr_t*attr:用来
  • 2024-08-19两线程读写数组
    #include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<unistd.h>#defineARRAY_SIZE10intshared_array[ARRAY_SIZE];pthread_mutex_tmutex;void*write_data(void*arg){intthread_id=*(int*)arg;