- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 Linux--多线程之线程资源回收pthread_cleanup_push和pthread_cleanup_pop
#include "apue.h"/**作用:线程结束后的资源回收1.pthread_cleanup_push与pthread_cleanup_pop要成对使用 否则编译器会瞎报错误 pthread_cleanup_push的执行顺序和声明顺序相反 当相遇取消请求时 清理函数对也生效*/void cleanup(void *ar){ printf(" %s \n",(ch
2016-12-03 19:46:21 606
原创 Linux--多线程之线程的取消pthread_cancel
#include "apue.h"/**pthread_cancel(pthread_t tid) 取消tid指定的线程 成功返回0 取消只是发送一个请求 会不正常的终止线程pthread_setcancelstate(int state,int *oldstate) 设置本线程对cancel信号的反应 state有两种值PTHREAD_CANCEL_ENABLE(缺省) 和PTHRE
2016-12-03 19:43:29 1534
原创 Linux--多线程之线程连接pthread_join
#include "apue.h"/**1.main函数的线程称为初始线程或主线程,主线程在main函数返回的时候,会导致整个线程结束。可以在主线程中使用pthread_exit函数 退出主线程 如此,进程会等待所有的线程结束时候才终止当一个线程被pthread_join之后 另外一个线程不能再pthread_join它*/struct person{ int age; cha
2016-12-03 19:42:04 1724
原创 Linux--多线程之线程的创建和退出
#include "apue.h"/**1.main函数的线程称为初始线程或主线程,主线程在main函数返回的时候,会导致整个线程结束。可以在主线程中使用pthread_exit函数 退出主线程 如此,进程会等待所有的线程结束时候才终止*/struct person{ int age; char name[10];};void *thread_fun(void *person
2016-12-03 19:39:06 9945 1
原创 Linux--多线程之互斥量
#include "apue.h"/**动态分配的互斥量 使用pthread_mutex_init 函数初始化冬天分配的互斥量 在释放内存钱 需要调用pthread_mutex_destroy静态分配的互斥量 可以将其设置为常量:PTHREAD_MUTEX_INITIALIZER*///线程共享资源int i;pthread_mutex_t mutex;void *thre
2016-12-03 19:36:10 291
原创 Linux --多线程之读写锁2
#include "apue.h"/**读写锁:和互斥量类似 然读写锁并行性更高 如,对于一个变量的读取是可以多个线程并行的读写锁有三种状态 读模式下的加锁,写模式下的加锁,不加锁。一次只有一个线程可以占有写模式下的读写锁 但是多个线程可以同时读模式下的读写锁读写锁在写加锁状态时,在它被解锁前,试图对这个锁加锁的线程都会阻塞 读写锁在读加锁状态时 所有试图以读模式 对其加锁的线程
2016-12-03 19:09:56 347
原创 Linux --多线程之读写锁1
#include "apue.h"/**读写锁:和互斥量类似 然读写锁并行性更高 如,对于一个变量的读取是可以多个线程并行的读写锁有三种状态 读模式下的加锁,写模式下的加锁,不加锁。一次只有一个线程可以占有写模式下的读写锁 但是多个线程可以同时读模式下的读写锁1.读写锁在写加锁状态时,在它被解锁前,试图对这个锁加锁的线程都会阻塞 2.读写锁在读加锁状态时 所有试图以读模式 对其
2016-12-03 19:07:35 257
原创 Linux--闹钟信号
#include "apue.h"void fun(int sig){ printf("========fun======\n");}main(int a,char *b[]){ int i=0; alarm(5);//10秒后发闹钟信号 该信号默认处理方式会终止当前的进程 signal(14,fun); // signal(14,SIG_IGN); signal(14
2016-12-02 18:07:11 905
原创 Linux--共享内存
#include "apue.h"main(){ int id; //创建共享内存 id=shmget(IPC_PRIVATE,128,0777); if(id<0){ printf("create share memmory fail \n"); }else{ printf("create share memmory succusess id=%d\n",id); s
2016-12-02 17:57:13 349
原创 Linux--共享队列2
//发送端#include "apue.h"struct msgbuf{ long type; char voltage[128]; char ID[4];};main(){ int id,key; struct msgbuf sendbuf; //创建key key = ftok("./apue.h",'a'); if(key<0){ perror("fail to
2016-12-02 17:53:22 461
原创 Linux--共享队列1
#include "apue.h"struct msgbuf{ long type; char voltage[128]; char ID[4];};main(){ int id; struct msgbuf sendbuf,readbuf; //创建共享队列 id=msgget(IPC_PRIVATE,0777); if(id<0){ printf("fail t
2016-12-02 17:51:10 402
原创 Linux--有名管道
#include "apue.h"//在当前目录创建一个管道文件main(){ int ret; //会在当前目录下生成一个特殊的不占空间的文件 在共享的window目录下执行 会没有权限 //umask 命令可以设置生成的文件的权限 ret = mkfifo("./myfifo",0777); if(ret<0) { printf("fail to mkfifo
2016-12-02 17:47:31 240
原创 Linux--无名管道
#include "apue.h"//无名管道的读阻塞main(){ int fd[2]; int ret; //初始化管道 ret=pipe(fd); if(ret<0){ printf("fail to create pipe\n"); return -1; } printf("success to create pipe ret=%d fd[0]=%d fd[1]=
2016-12-02 17:42:34 297
Snipaste-2.3-Beta-x64.zip
2020-11-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人