随笔分类 - 编程深入
主要包括:源码阅读、设计模式、数据结构、数据库操作、
摘要:一、消息队列 一个或多个进程可向消息队列写入消息; 一个或其他多个进行可从消息队列中读取消息。 linux中的消息被描述成是内核地址空间中的一个内部链表; 每个消息队列有一个IPC(inter-Process Communication 进程间通信)的标识号唯一的标识 linux为系统中的所有消息队
阅读全文
摘要:每个线程都有自己的专有数据,私有数据采用的是公有键私有值的存储方式,通过键来访问值的方式访问数据。以线程看来,访问就是使用公有键指代线程数据;貌似对键的取值和对变量的访问是一样的。其实,公有键的私有值的访问方式和面向对象中的多态很相似,不同线程中,同样的键实际指向的是不同的内存内容。 一、操作线程私
阅读全文
摘要:一、互斥对象基础 互斥对象其实就是锁,用来邦正共享资源操作的完整性,每个对象都对应与一个可称为“互斥锁”的标记。该标记用来保证在人一个时都只能有一个线程访问该对象,资源通常时内存、文件句柄等。线程访问某资源,需要先获得互斥量,对其加锁;加过锁的资源如果需要被其他线程访问,通过互斥量获取资源也被锁定,
阅读全文
摘要:一、多线程竞争域 1、函数pthread_attr_setscope()和函数pthread_attr_getscope()用来设置和获取线程的作用域,作用域决定线程是在进程内还是在系统内竞争资源,linux下只能设置为:PTHREAD_SCOPE_SYSTEM 二、代码test7_6.c 1 //
阅读全文
摘要:线程除了运行完毕后正常退出外,还可以被撤销,使得线程中途退出并释放资源 一、线程取消函数pthread_cancel(): 1、输入参数:线程名称,函数向指定的线程发送终止信号 2、返回参数:发送成功 0, 否则为非 0 3、附加应用:pthread_join(),发送成功也无法保证线程就会终止,因
阅读全文
摘要:一、线程分离属性 线程通常分为可合并和不可合并线程,前者不能被其他线程(包括主线程)收回资源并杀死,其资源在其终止后由系统释放;后者则可以被主线程杀死或进行资源回收,甚至是资源是被强制回收的,主线程可以全程监控线程的运行状态。 二、pthread_attr_setdetachstate函数,该函数可
阅读全文
摘要:一、多线程: 系统中运行的程序都是一个进程,进程包含一到多个进程,进程执行时需要一定的资源。线程可以是一组指令的集合或特殊的程序段,可以在程序里独立执行,可将其理解为代码运行的上下文,可以将其当作轻量级的进程,主要实现单个程序里执行多个任务。由于进程的创建、切换、调度和销毁时窜在速度慢,内存和资源消
阅读全文
摘要:一、linux下通过进程编号管理程序运行,主要通过fork函数实现多进程编程。通过该函数,实现系统调用创建一个与原来进程几乎完全相同的进程,两个进程几乎可以完成一模一样的事情,通过初始参数的不同,实现不同的功能。主要通过返回值的不同区分进行类型, 返回0表示是子进程,如果是非0,则是创建的进程的id
阅读全文
摘要:在make文件的书写中,为了简化文件,常常会使用变量: make的规则: 目标文件:依赖文件列表 命令构建集 无论是目标文件,还是依赖文件列表,还是命令构建合集中都可以使用变量: make中的变量主要有两种:自定义变量和内置make变量: 1、自定义变量后,可以在 Makefile中使用该变量。变量
阅读全文
摘要:1、运行gtk的程序时,总会提示(RGB-Bͨ��:2517): Gtk-WARNING **: 20:46:45.508: Theme parsing error: gtk.css:2:33: Failed to import: 打开文件 /home/nication/.config/gtk-3.
阅读全文
摘要:最新需要安装个opencv,既然有最新版就选最新版的,有扩展库也毫不犹豫选择安装,过程如下: 1、下载好文件:opencv-4.5.0.tar.gz opencv_contrib-4.5.0.tar.gz 2、解压 tar -xvf opencv-4.5.0.tar.gz 生成目录opencv-4.
阅读全文
摘要:最近在看人民邮电出版社的冯振的《OpenCV4快速入门》,在从源码一路编译完成OpenCV4.5的安装后,cmake问题不大,但是make时,总会出现: 1 make 2 [ 50%] Linking CXX executable videoCapture 3 /usr/bin/ld: /usr/l
阅读全文
摘要:一、安装部分 1、由于学习需要,需要安装opencv4.5,只能源码安装,环境为manjaro linux, 2020年11月2日最新升级到testing版本 sudo pacman -S cmake sudo pacman -S git sudo pacman -S base-devel sudo
阅读全文
摘要:老样子,代码就是一切,首先queueg.h 1 #ifndef queueg_h 2 #define queueg_h 3 4 #include <stdio.h> 5 #include <stdlib.h> 6 7 typedef int DataType; 8 9 typedef struct
阅读全文
摘要:代码非常简单,直接代码stackg.h 1 #ifndef stackg_h 2 #define stackg_h 3 4 #include <stdio.h> 5 #include <stdlib.h> 6 7 typedef int DataType; 8 9 typedef struct no
阅读全文
摘要:一、环境配置,使用vim编辑器和python3及常见的机器学习库 参考书:https://www.jb51.net/books/527823.html 下载已经失效了,书名:《机器学习算法原理与编程实践》 郑捷 著 电子工业出版社 配套代码:https://github.com/wenbo/MLBo
阅读全文
摘要:先看执行的结果: 1 主函数正在创建线程,... 2 线程1被创建 3 Thread1 : I'm thread 1th 4 线程2被创建 5 Thread2 : I'm thread 2nd 6 thread2 : number = 0 7 线程3被创建 8 主函数正在等待线程结束... 9 th
阅读全文
摘要:内核模块编程入门: 一、准备工作: 1、打开一个终端,输入命令: $ uname -r 结果:5.5.2-1-MANJARO 2、安装必要的内核文件: sudo pacman -S linux55-headers 正在解析依赖关系... 正在查找软件包冲突... 软件包 (1) linux55-he
阅读全文
摘要:通常情况下,linux下可以直接使用gcc命令直接编译生成可执行文件: 例如:hello.c 可以直接用gcc hello.c -o hello即可生成可执行文件 也可以使用make hello也可生成hello可执行文件 那么你想看下分开编译的具体环节,请跟我来: 1、预编译:命令 gcc hel
阅读全文
摘要:原文地址:https://www.jb51.net/article/160197.htm 第一种: 效果: 第二种: 效果:
阅读全文