服务器开发之Linux系统编程
刹那黄昏
韬光养晦
展开
-
Linux系统编程_课时66_线程
课时66_线程文章目录课时66_线程1、创建线程2、用户区独立与共享2.1、用户区包括哪些内容2.2、用户区共享内容2.3、用户区不共享内容3、线程与进程4、多线程与多进程区别4.1、多进程始终共享的资源4.2、多线程始终共享的资源4.3、多线程比多进程节省资源4.4、多线程没有降低效率1、创建线程创建线程后,地址空间没有变化,进程退化成了线程,即主线程。创建出的子线程和主线程公用地址空间...原创 2019-09-03 00:56:49 · 101 阅读 · 0 评论 -
Linux系统编程_课时67+74_线程创建
课时67_线程创建文章目录课时67_线程创建1、创建线程---pthread_creat函数1.1、函数原型1.2、函数参数1.3、函数返回值1.4、函数使用及注意事项1、创建线程—pthread_creat函数1.1、函数原型int pthread_create( pthread_t* thread, //线程ID,无符号长整形,传出参数 const pthread_...原创 2019-09-03 01:53:21 · 139 阅读 · 0 评论 -
Linux系统编程_课时68_循环创建多个子线程和注意事项
课时68_循环创建多个子线程和注意事项1、打印多个线程序号和线程ID1.1、代码实现#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/stat.h>#include <sys/types.h>#include <string.h...原创 2019-09-03 23:17:43 · 205 阅读 · 0 评论 -
Linux系统编程_课时70_线程函数打印错误信息
课时70_线程函数打印错误信息1、pthread_create函数返回值成功,返回0;失败,返回error number;注意与系统中的errno不同,pthread_create函数的error number不能使用perror()函数直接打印错误信息。2、strerror函数获取线程创建失败错误信息#include <stdio.h>#include <unis...原创 2019-09-03 23:36:11 · 201 阅读 · 0 评论 -
Linux系统编程_课时71_线程退出函数pthread_exit(void* retval)
课时70_线程退出函数pthread_exit(void* retval)文章目录课时70_线程退出函数pthread_exit(void* retval)1、函数原型:2、主线程使用pthread_exit退出不影响子线程运行2.1、代码示例2.1、执行结果:3、主线程使用exit()退出影响主线程运行3.1、代码示例3.2、执行结果:1、函数原型:void pthread_exit(vo...原创 2019-09-04 00:06:02 · 709 阅读 · 0 评论 -
Linux系统编程_课时72_主线程使用pthread_join回收子线程资源
课时72_主线程使用pthread_join回收子线程资源文章目录课时72_主线程使用pthread_join回收子线程资源1、函数原型2、子线程退出时携带栈信息2.1、代码示例2.2、执行结果:3、子线程退出时携带全局变量信息3.1、代码示例3.2、执行结果:1、函数原型#include <pthread.h>int pthread_join(pthread_t thread...原创 2019-09-04 00:35:46 · 163 阅读 · 0 评论 -
Linux系统编程_课时73_线程相关函数介绍
课时73_线程相关函数介绍文章目录课时73_线程相关函数介绍1、线程分离---pthread_detach1.1、函数原型2、杀死(取消)线程---pthread_cancel2.1、函数原型2.2、使用注意事项2.3、代码示例及执行结果2.4、设置取消点---pthread_testcancel()3、判断两个线程ID是否相等(预留函数)---pthread_equal1、线程分离—pthr...原创 2019-09-08 23:23:02 · 119 阅读 · 0 评论 -
Linux系统编程_课时75+76_线程同步概念+线程同步思想
课时75+76_线程同步概念+线程同步思想文章目录课时75+76_线程同步概念+线程同步思想1、线程同步的概念1.1、创建两个线程分别操作全局变量1.1、代码示例1.2、执行结果1.3、结果分析1.4、结论:数据混乱2、线程同步的思想1、线程同步的概念两个线程分别对全局变量number做++操作,每个线程对全局变量number做自增操作10000次。预期结果:两个线程都执行完对全局变量nu...原创 2019-09-14 22:19:13 · 102 阅读 · 0 评论 -
Linux系统编程_课时77_互斥锁相关的函数
课时77_互斥锁(互斥量)相关的函数文章目录课时77_互斥锁(互斥量)相关的函数1、创建互斥锁2、互斥锁初始化3、互斥锁加锁4、互斥锁尝试加锁5、互斥锁解锁6、互斥锁释放1、创建互斥锁类似于声明一个变量pthread_mutex_t mutex;2、互斥锁初始化互斥锁初始化函数int pthread_mutex_init( pthread_mutex_t *mutex,...原创 2019-09-14 22:55:17 · 345 阅读 · 0 评论 -
Linux系统编程_课时78_互斥锁实现线程同步
课时78_互斥锁实现线程同步文章目录课时78_互斥锁实现线程同步1、代码示例1、代码示例#include <stdio.h> //printf对应的头文件#include <unistd.h> //usleep对应的头文件#include <pthread.h> //线程对应的头文件//宏定义,每个线程操作全局变量number次数#define ...原创 2019-09-14 23:09:23 · 258 阅读 · 0 评论 -
Linux系统编程_课时82_互斥锁死锁
课时82_互斥锁死锁1、造成死锁的原因1.1、自己锁自己在锁还没有解锁时,再次加锁。//子线程pthid_p1,操作全局变量numbervoid* pthid_p1_func(void* arg){ for(int i=0;i<COUNT_MAX;++i) { pthread_mutex_lock(&mutex); //访问共享资源(全局变量number)前加锁...原创 2019-09-15 18:11:16 · 225 阅读 · 0 评论 -
Linux系统编程_课时83+84_读写锁的特性+使用场景
课时83+84_读写锁的特性+使用场景文章目录课时83+84_读写锁的特性+使用场景1、读写锁的特性1、读写锁是几把锁2、读写锁的类型3、读写锁的特性2、读写锁的使用场景2.1、线程A加写锁成功,线程B请求读锁2.2、线程A持有读锁,线程B请求写锁2.3、线程A持有读锁,线程B请求读锁2.4、线程A持有读锁,然后线程B请求写锁,然后线程C请求读锁2.5、线程A持有写锁,然后线程B请求读锁,然后线...原创 2019-09-15 18:41:33 · 321 阅读 · 0 评论 -
Linux系统编程_课时85_读写锁操作函数
课时85_读写锁操作函数文章目录课时85_读写锁操作函数1、初始化读写锁2、销毁读写锁3、加读锁4、尝试加读锁5、加写锁6、尝试加写锁7、解锁1、初始化读写锁int pthread_rwlock_init( pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr);...原创 2019-09-15 18:55:03 · 239 阅读 · 0 评论 -
Linux系统编程_课时86_读写锁练习
文章目录课时86_读写锁练习1、要求2、不加锁2.1、不加锁代码2.2、不加锁代码执行结果3、加读写锁3.1、加读写锁代码3.2、加读写锁代码执行结果课时86_读写锁练习1、要求3个线程不定时写同一个全局资源,5个线程不定时读同一个全局资源。2、不加锁2.1、不加锁代码#include <stdio.h> //printf对应的头文件#include <unist...原创 2019-09-15 19:27:07 · 227 阅读 · 0 评论