Linux-线程进程
文章平均质量分 72
「已注销」
这个作者很懒,什么都没留下…
展开
-
线程同步-信号量
1.信号量的数据类型sem_t本质是一个长整型的数,相关头文件semaphore.h 2.信号量初始化 原型:extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value) 参数:sem是一个信号量指针; pshared为0只能在当前进程的所有线程间共享,否则在进程间共享原创 2017-11-09 14:44:53 · 224 阅读 · 0 评论 -
进程间通信-共享内存
1.共享内存(shared memory)是最快的IPC,多个进程同时对一段内存地址操作,它没有同步机制, 所以需要同步,常把信号量和共享内存结合起来使用。 2.相关函数:#include <sys/shm.h> 创建共享内存:int shmget(key_t key, size_t size, int flag); 创建或获取一个共享内存:成功返回共享内存ID,失败返回-1 连接共享...原创 2017-11-16 11:44:53 · 197 阅读 · 0 评论 -
进程通信-信号量semaphore
semaphore:信号量 头文件:include int semget(key_t key,int num_sems,int sem_flags);创建或获取一个信号量组:若成功返回信号量集ID,失败返回-1 功能:创建一个新信号量或取得一个已有信号量的键。 参数:key:不相关的进程可以通过该整数值访问同一个信号量。 num_sems:指定需要的信号量的数目。原创 2017-11-14 18:44:10 · 323 阅读 · 0 评论 -
进程通信-信号signal
signal:信号 原型:typedef void(*sighandler_t)(int); sighandler_t signal(int signum,sighandler_t handler); void ( *signal(int signum, void (*handler)(int)) ) (int); 参数:signum指出要设置处理方法的信号原创 2017-11-14 16:30:29 · 214 阅读 · 0 评论 -
进程通信-有名管道FIFO
FIFO:有名管道 原型:int mkfifo(const char *pathname,mode_t mode);头文件:sys/types.h和sys/stat.h 参数:创建的管道名字和操作权限 说明:可以在任意两个进程中通信 返回值:成功则返回0,否则返回-1,错误原因存于errno中 说明:1.管道有大小限制(4096B) 在写入数据之前,会先判断管道大小是否足够,若不够就不会原创 2017-11-11 15:39:44 · 297 阅读 · 0 评论 -
进程通信-无名管道PIPE
进程间通信方式: 古老方式: 无名管道:PIPE 有名管道:FIFO named pipe 信号:signal 系统IPC(进程间通信) 信号量(sem) 共享内存(shm) 消息队列(msg) BSD: 套接字:socket 先说无名管道PIPE PIPE:无名管道 原型:int pipe(int pipefd[2]);头文件为unistd.h原创 2017-11-11 11:39:58 · 208 阅读 · 0 评论 -
线程同步-读写锁
pthread读写锁把对共享资源的访问者分为读者和写者,读者只对共享资源进行读访问,写者只对共享资源进行写操作。在互斥机制,读者和写者都需要独立独占互斥量以独占共享资源, 在读写锁机制下,允许同时有多个读者读访问共享资源,只有写者才需要独占资源。相比互斥机制,读写机制由于允许多个读者同时读访问共享资源,进一步提高了多线程的并发度。 1.读写锁机制:原创 2017-08-31 14:42:12 · 482 阅读 · 0 评论 -
线程同步 ----互斥锁
线程的创建: int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void *),原创 2017-08-30 17:55:57 · 383 阅读 · 0 评论 -
线程同步-条件变量
条件变量用来等待不是用来上锁的,会自动阻塞一个线程,直到有触发条件,通常和互斥锁连用。 条件变量是利用线程间共享全局变量进行同步的一种机制,包含两步:一个线程等待条件变量的条件成立被阻塞,另一个线程使条件成立,并发出signal。 相关函数: int pthread_cond_init(pthread_cond_t *cond,pthread_condattr_t *cond_attr);原创 2017-08-31 17:53:38 · 254 阅读 · 0 评论 -
进程间通信-消息队列
消息队列: 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法,每个数据块都被认为含有一个类型, 接收进程可以独立地接收含有不同类型的数据结构,我们可以通过发送消息来避免命名管道的同步和阻塞. 但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制. Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度. 相关函数: int msgg原创 2017-11-16 15:33:29 · 171 阅读 · 0 评论