使用mutex和条件变量对比 使用mutex和条件变量对比 问题 学生线程写作业,老师线程检查作业。要求:只有学生线程写完作业了,老师线程才能检查作业。 使用mutex 123456789101112131415161718192021222324252627282930313233343536373839404142#include "apue.h" #include <pthread.h&g 2020-03-06 系统与底层 > Unix系统编程 #pthread
Linux下基本的线程同步方法 线程同步问题引入: 2个线程同时修改一个变量x = 1时,如果不进行同步会怎么样? 假设进行增加操作,增量操作通常分解为3步 从内存将变量读入寄存器(cpu) 在寄存器中对变量做增量操作 写回内存 那么在线程A对x进行增量操作时,如果不加锁,那么最终结果取决与线程B开始增量操作时获取的值, 比如: 线程A中cpu对寄存器中变量做完增量操作还没有写回内存,此时线程B获取到的值还是1,最终2 2020-02-28 系统与底层 > Unix系统编程
APUE习题8.7 exec在执行前会关闭所有打开的目录流(DIR) 检查文件描述符状态标志, dirfd(DIR *)得到目录的文件描述符 重要的fcntl()函数,得到文件描述符状态 忽略了exec族函数的第一个参数的作用导致调用exec一直成功 exec的第一个参数一般是可执行文件的文件名, The first argument, by convention, should point to the fi 2020-02-08 系统与底层 > Unix系统编程
编译期实现排序 编译期间实现排序 在b站上看到的,凭借一点c++ 的知识勉强读懂 思路 Values实现将基类对象类型放在(展开在)tuple中,std::tuple<>是个聚合类,能将参数包中不同元素类型糅合成一种类型,排序就是在tuple上进行的 模板类实现判断, template<bool,typename Then,typename Else> If 封装成Compare 2020-02-05 编程语言 > C与C++
对C语言标准IO的理解 对标准IO的理解: 个人理解,如果有错误请指出 c语言标准IO通过一个FILE结构来封装了read和write系统调用,并且标准IO缓冲区的分配也是通过修改FILE的元素来改变, 由于常用stdin,stdout,就认为缓冲区是分为输入缓冲区和输出缓冲区的,这只是因为缓冲区承担一项工作(输入or输出) 如果用文件流以O_RDWR状态打开一个文件,那么缓冲区将会同时作为输入和输出的缓冲区, 看 2020-01-29 系统与底层 > Unix系统编程
APUE第四章文件和目录 与进程相关联的ID 1.实际用户ID+实际组ID2.有效用户ID+有效组ID+附属组ID3.保存的设置用户ID+保存的设置组ID 执行一个程序文件时,进程的有效用户ID=实际用户ID,有效组ID=实际组ID, 当我执行./a.out文件时,如果a.out此文件权限是root root,但是我以非root用户来执行的(实际用户是非root用户,此时进程的有效用户id变成实际用 2020-01-28 系统与底层 > Unix系统编程
APUE第三章文件IO笔记+习题 3 文件IO 非缓冲IO,属于POSIX,非IOS C标准 stdin stdou stderr与STDIN_FILENO STDOUT_FILENO STDERR_FILENO的关系 stdin等属于FILE *类型,在<stdio.h>中 STDIN_FILENO等是无符号整数,表示描述符,在<unistd.h>中 3.1 常用函数 open123#inclu 2020-01-23 系统与底层 > Unix系统编程
KMP 前缀表 + kmp 求前缀表的核心就是 知道在 字符串‘’A B …. C D‘’中 求 最长公共前后缀长度 已知 A B互相相同,C D 互相相同, (A + B)和(C+D)互相相同 得到A和D互相相同 prefix_table右移一下, 扫描文本串时,pattern串,根据prefix_table的下标位置来改变指向pattern串的指针 12345678910111213141 2020-01-16 算法与数据结构 > 字符串算法
计算机网络概述 持续更新 一、网络概述 OSI参考模型(数据通信 应用层: 所有能产生网络流量的程序 表示层: 传输之前是否进行加密or压缩处理 会话层: 区分来的数据是属于哪一个窗口的(会话),访问网站建立会话 1* 查看是否存在木马: netstat -n -b 传输层: 可靠传输 流量控制 可靠传输:在网络中丢包了,只要server没有收到client的包,则server一直发包,直到确定 流 2020-01-16 网络与服务 > 计算机网络
const int* 和 const int * const 和 int const * 的区别 const int*和const int * const和 int const *的区别原文地址 int const *是一个指向常量整数的指针 指向了一个不能被修改的值但是指针指向的地址可以改变 const 在数据类型的一侧,所以可以放在int的前面const int *,(从c++ prime了解到) 123456789101112#include <stdio.h>int m 2019-12-18 编程语言 > C与C++ #const pointer