摘要: 前提 大部分情况都是因为当前系统的内核不满足驱动文件的编译条件,可以通过驱动文件中的文档来确定是否要升级内核还是降级内核, 对于升级内核只需要下载指定的内核版本安装即可,降级内核(暂时不清楚是否会引发其他问题) 找到适合自己的内核 github 搜索 RTL88x2BU,会出现很多大神维护的驱动文件 阅读全文
posted @ 2019-10-18 18:18 sfdevs 阅读(1629) 评论(0) 推荐(0) 编辑
摘要: ``` include include include include include std::once_flag g_flag; class Singleton { private: Singleton(){} static void CreateInstance() { pToSelf = n 阅读全文
posted @ 2019-10-17 16:32 sfdevs 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 线程池的作用 用于执行大量相对短暂的任务 计算密集型任务 线程 = CPU个数 I/O密集型任务 线程 CPU个数 当任务增加的时候能够动态的增加线程池中线程的数量直到达到一个阈值 当任务执行完毕的时候,能够动态的销毁线程池中的线程 该线程池的实现本质上也是生产者与消费者模型的应用。生产者线程向任务 阅读全文
posted @ 2019-10-12 18:59 sfdevs 阅读(149) 评论(0) 推荐(0) 编辑
摘要: POSIX信号量相关函数 sem_open sem_close sem_unlink sem_init sem_destroy sem_wait sem_post POSIX互斥锁相关函数 pthread_mutex_init pthread_mutex_lock pthread_mutex_unl 阅读全文
posted @ 2019-10-10 19:25 sfdevs 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 线程属性 初始化与销毁属性 获取与设置分离属性 获取与设置栈大小 获取与设置栈溢出保护区大小 获取与设置线程竞争范围 获取与设置调度策略 获取与设置继承的调度策略 获取与设置调度参数 获取与设置并发级别   仅在N:M线程模型中,设置并发级别,给内核一个提示;表示提供给定级别数量 阅读全文
posted @ 2019-10-10 16:44 sfdevs 阅读(159) 评论(0) 推荐(0) 编辑
摘要: POSIX线程库相关介绍   与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都有“pthread_”开头   要使用这些函数库,都需要加入头文件“”, 链接的时候需要链接“ lpthread” pthread_create pthread_exit 阅读全文
posted @ 2019-10-09 17:10 sfdevs 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 什么是线程   在一个程序里的一个执行路线就叫做线程(thread),更准确的定义是:线程是“一个进程内部的控制序列”   一切进程至少都有一个执行线程 进程与线程   进程是资源竞争的基本单位   线程是程序执行的最小 阅读全文
posted @ 2019-10-08 17:51 sfdevs 阅读(204) 评论(0) 推荐(0) 编辑
摘要: POSIX共享内存函数介绍 shm_open ftruncate fstat shm_unlink mmap POSIX共享内存示例   共享内存已经自动挂载到/dev/shm目录下 shm_open.c shm_write.c shm_read.c shm_unlink.c 阅读全文
posted @ 2019-10-08 15:49 sfdevs 阅读(203) 评论(0) 推荐(0) 编辑
摘要: POSIX消息队列相关函数 mq_open mq_close mq_unlink mq_getattr|mq_setattr mq_send mq_receive mq_notify POSIX消息队列示例 mq_open.c   对于SYSTEM IPC可以使用ipcs查看;对 阅读全文
posted @ 2019-10-08 14:34 sfdevs 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-09-29 17:53 sfdevs 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 用信号量解决生产者、消费者问题 实现shmfifo ip.h ip.c shmfifo.h shmfifo.c shmfifo_send.c include "shmfifo.h" typedef struct stu { int name[32]; int age; }STU; int main( 阅读全文
posted @ 2019-09-26 19:21 sfdevs 阅读(196) 评论(0) 推荐(0) 编辑
摘要: n哲学家进餐问题描述有五个哲学家,他们的生活方式是交替地进行思考和进餐,n哲学家们共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五支筷子,n平时哲学家进行思考,饥饿时便试图取其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐,n进餐完毕,放下筷子又继续思考。 约束条件 (1)只有拿到 阅读全文
posted @ 2019-09-26 10:13 sfdevs 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 用信号量实现进程互斥示例 结果 阅读全文
posted @ 2019-09-25 16:16 sfdevs 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 信号量 信号量和P、V原语由Dijkstra(迪杰斯特拉)提出 信号量: 互斥: P、V在同一进程中 同步: P、V在不同进程中 信号量值含义 S 0 : S表示可用资源个数 S=0 : 表示无可用资源,无等待进程 S include include include include include 阅读全文
posted @ 2019-09-25 15:22 sfdevs 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 共享内存数据结构 共享内存函数 shmget 结果 shmat shmdt shmget_write.c 结果 shmget_read.c shmctl 共享内存示例 shmget_write.c shmget_read.c 阅读全文
posted @ 2019-09-25 13:03 sfdevs 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 共享内存   共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 mmap_ 阅读全文
posted @ 2019-09-24 19:26 sfdevs 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 消息队列实现回射客户/服务器 msg_srv.c include include include include include include define ERR_EXIT(m) \ do \ { \ perror(m); \ exit(EXIT_FAILURE); \ } while (0) 阅读全文
posted @ 2019-09-24 17:16 sfdevs 阅读(103) 评论(0) 推荐(0) 编辑
摘要: msgsnd msgbuf   消息结构在两方面受制约: 它必须小于系统规定的上限值(MSGMAX) 它必须以一个long int长整数开始,接收者函数将利用这个长整数确定消息的类型 阅读全文
posted @ 2019-09-24 13:48 sfdevs 阅读(139) 评论(0) 推荐(0) 编辑
摘要: IPC对象的持续性 随进程持续 :一直存在直到打开的最后一个进程结束。(如pipe和FIFO) 随内核持续 :一直存在直到内核自举(内核自举就是把主引导记录加载到内存,并跳转执行这段内存)或显示删除(如System V消息队列、共享内存、信号量) 随文件系统持续 :一直存在直到显示删除,即使内核自举 阅读全文
posted @ 2019-09-24 09:40 sfdevs 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-09-23 16:20 sfdevs 阅读(678) 评论(0) 推荐(0) 编辑
摘要: ## 一、基本的操作步骤如下 1、docker run一个任意版本的Linux发行版 2、docker export将容器导出为tar包 3、wsl --import将tar包导入为一个linux子系统 4、wsl -d xxx启动这个linux子系统,并安装ssh等工具连接 5、wsl expor 阅读全文
posted @ 2023-08-15 18:02 sfdevs 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 默认参数 #include <stdio.h> #define VA_NUM_ARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, \ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, 阅读全文
posted @ 2023-05-03 11:05 sfdevs 阅读(54) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h> #include <stdint.h> #include <string.h> #include <unistd.h> #define clear() printf("\033[H\033[2J") int main(void) { uint32_t runni 阅读全文
posted @ 2022-08-08 13:28 sfdevs 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 点击查看代码 =IF(A1>POWER(1024,4),TRUNC(A1/POWER(1024,4),2)&" TB", IF(A1>POWER(1024,3),TRUNC(A1/POWER(1024,3),2)&" GB", IF(A1>POWER(1024,2), ROUND(A1/POWER( 阅读全文
posted @ 2022-06-13 12:51 sfdevs 阅读(497) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2022.cnblogs.com/blog/1320889/202202/1320889-20220212153005865-1149236250.png) ![](https://img2022.cnblogs.com/blog/1320889/202202/1320889-20220212153544747-430335299.png) ![](https://i 阅读全文
posted @ 2022-02-12 16:09 sfdevs 阅读(60) 评论(0) 推荐(0) 编辑
摘要: configure 参数 debug 参数 方法一 方法二 阅读全文
posted @ 2022-02-12 15:12 sfdevs 阅读(92) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2020.cnblogs.com/blog/1320889/202201/1320889-20220104175513925-1391011810.png) 阅读全文
posted @ 2022-01-04 17:56 sfdevs 阅读(256) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/file.h> #define PID_BUF_LEN (20) #defi 阅读全文
posted @ 2020-08-13 13:59 sfdevs 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 元字符 字符|描述|例子 | | \\|将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符|'\n' 匹配一个换行符,序列 '\\\\' 匹配 "\\", 而 "\\(" 匹配 "("。 .|匹配除换行符(\\n、\\r)之外的任何单个字符| [xyz]|字符集合。 阅读全文
posted @ 2020-05-08 13:03 sfdevs 阅读(192) 评论(0) 推荐(0) 编辑
摘要: grep sed 阅读全文
posted @ 2020-05-07 23:16 sfdevs 阅读(2279) 评论(0) 推荐(0) 编辑