进程、线程
文章平均质量分 75
neko233
这个作者很懒,什么都没留下…
展开
-
原子类型与C++11原子操作
原子操作即多线程程序中“最小的且不可并行化的”操作。通常对一个共享的资源的操作是原子操作的话,意味着多个线程访问资源时,有且仅有唯一一个线程在对这个资源进行操作。通常情况下,原子操作都是通过互斥的访问来保证的。例如使用POSIX标准的pthread库中的互斥锁来进行。#include <pthread.h>#include <iostream>using namespace std;static long long total = 0;pthread_mutex_t m原创 2021-04-06 17:21:35 · 322 阅读 · 0 评论 -
线程间的互斥和信号量
线程间的互斥互斥锁是用来保护一段临界区的,它保证某段时间内只有一个线程在执行一段代码或者访问某个资源。函数 #include <pthread.h> pthread_mutex_t fastmutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALZER_NP; pthread_mutex_t errchkmutex = PTHREAD_ER原创 2021-02-04 16:19:31 · 249 阅读 · 0 评论 -
linux下的线程
线程与进程相比的有点:系统资源消耗低速度快线程间数据共享比进程间容易#include <pthread.h>#include <unistd.h>int pthread_create(pthread_t *thread,pthread_attr_t * attr,void* (*start_routine)(void*),void* arg);//创建线程int pthread_join(pthread_t thread,void** threadReturn);/原创 2021-02-04 16:00:43 · 80 阅读 · 0 评论 -
进程间通信和同步
linux下进程间的通信方法:半双工管道、FIFO(命名管道)、消息队列、信号量、共享内存等。1.半双工管道进程创建管道,每次创建两个文件描述符来操作管道。其中一个对管道进行写操作,另一个描述符进行读操作。创建管道的原型为:#include<unistd.h>int pipe(int filedes[2]);filedes数组是一个文件描述符的数组,用于保存管道返回的两个文件描述符。filedes[0]是为了读操作而创建和打开的,filedes[1]是为了写操作而打开的。函数执行原创 2021-02-04 15:31:32 · 361 阅读 · 0 评论