Linux
文章平均质量分 74
Unknown To Known
这个作者很懒,什么都没留下…
展开
-
Slam十四讲之第一讲和第二讲,实践编程基础
顺便说明一下,这里标的是AMD64,但是也支持EM64T架构,所以无论你的电脑是AMD处理器还是Intel处理器,都可以使用。两种,静态库以 .a 作为后缀名,共享库以 .so 结尾。cmake . 的时候生成许多中间文件,这样把CMakeLIsts.txt和main.cpp和中间文件放在一起,非常影响,最常规的做法是,cmake生成这些的中间文件单独放到一个build文件夹中。最重要的CD的配置,选择新CD/DVD(SATA),在左侧选择“使用ISO镜像文件”,并填入刚才下好的镜像文件路径,原创 2023-07-13 16:23:42 · 194 阅读 · 0 评论 -
Linux共享内存 和相关的 shm函数 shmget,shmat,shmdt,shmctl函数
1、共享内存的定义由于进程通信的本质是要让两个不同的进程看到同一份资源,我们可以在物理内存上开辟一块空间,这块空间被称为共享内存,然后让这两个进程通过某种方式都能访问到这块内存,这样的话,两个进程之间就可以通信了。注意:共享内存操作默认不阻塞,如果多个进程同时读写共享内存,可能出现数据混乱,共享内存需要借助其他机制来保证进程间的数据同步,比如:信号量,共享内存内部没有提供这种机制。2、共享内存的特点。原创 2023-06-03 09:32:38 · 1442 阅读 · 0 评论 -
Linux常用命令简单总结
mv myfile /home/pc01/ 移动当前目录下myfile文件到 /home/pc01/路径下。rm -rf /home/pc01/myfolder 删除/home/pc01/目录下myfolder文件夹。touch /home/bin/myfile 在/home/bin/目录下创建myfile文件。rm /home/pc01/file01 删除/home/pc01/目录下file01文件。mkdir ./dir_t 意思是在这个~表示的文件中创建一个dit_t的文件。原创 2023-05-16 20:45:45 · 329 阅读 · 0 评论 -
linux文件管理命令 cd命令 (二)
在 Linux 终端中如果想要进行工作路径的切换,需要使用 cd 命令。在进行目录的切换的时候, 我们可以使用相对路径也可以使用绝对路径。如果是使用 cd 命令切换到家目录,后边可以什么路径都不加,这样也可以进入到当前用户的家目录。按照上边的格式来表示家目录书写起来比较麻烦,有一种相对简单的写法就是使用 ~ 表示。综上所述也就是通过 cd 进入到当前用户的家目录一共有三种不同的方式。:使用相对路径 / 绝对路径都可以,该路径必须是一个有效路径。在临近的两个目录之间切换。原创 2023-05-06 21:14:51 · 463 阅读 · 0 评论 -
IO多路复用——select函数
在 select() 函数中第 2、3、4 个参数都是 fd_set 类型,它表示一个文件描述符的集合,类似于信号集 sigset_t,这个类型的数据有 128 个字节,也就是 1024 个标志位,和内核中文件描述符表中的文件描述符个数是一样的。 内核在遍历这个读集合的过程中,如果被检测的文件描述符对应的读缓冲区中没有数据,内核将修改这个文件描述符在读集合 fd_set 中对应的标志位,改为 0,如果有数据那么这个标志位的值不变,还是 1。 这并不是巧合,而是故意为之。,这个函数是跨平台的,原创 2023-04-25 21:07:41 · 603 阅读 · 0 评论 -
IO多路复用—多线程网络并发通信 select poll epoll
IO 多路转接也称为 IO 多路复用,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写数据)程序的阻塞就会被解除,之后就可以基于这些(一个或多个)就绪的文件描述符进行通信了。 通过这种方式在单线程 / 进程的场景下也可以在服务器端实现并发。原创 2023-04-20 20:17:01 · 563 阅读 · 0 评论 -
Linux多线程C++版(九) 线程同步和互斥-----线程信号量
【代码】Linux多线程C++版(九) 线程同步和互斥-----线程信号量。1.基本概念2.信号量创建和销毁3.信号量加和减操作4.代码理解信号量5.信号量实例银行账户取款----实现互斥6.信号量实例计算和取结果----实现线程同步原创 2022-12-08 19:42:21 · 1055 阅读 · 2 评论 -
Linux多线程C++版(八) 线程同步方式-----条件变量
1.条件变量基本概念- 互斥锁的缺点是它只有两种状态:锁定和非锁定- 条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足- 条件变量内部是一个等待队列,放置等待线程,线程在条件变量上等待和通知,互斥锁用来保护等待队列(对等待队列上锁),条件变量通常和互斥锁一起使用。- 条件变量允许线程等待特定条件发生,当条件不满足时,线程通常先进入阻塞状态,等待条件发生变化。一旦其他的某个线程改变了条件,可唤醒一个或多个阻塞的线程- 具体的判断条件还需要用户给出- 条件变量数据类型 pt原创 2022-12-02 23:06:31 · 784 阅读 · 0 评论 -
Linux多线程C++版(七) 线程互斥方式-----读写锁
1.读写锁基本概念2.读写锁创建和销毁3.读写锁的加锁和解锁4.代码了解读写锁5.线程互斥案例---ATM取钱--使用读写锁 先读后写,读锁成功加上,加写锁堵塞,要等读锁释放。总结特性:读和读互不影响,读和写相互排斥,写和写相互排斥。 都是写锁,第一个写锁加上,第二次写锁失败。 先写后读,写锁成功加上,加读锁失败。 都是读锁,是都成功的。原创 2022-11-30 20:28:46 · 1163 阅读 · 0 评论 -
Linux多线程C++版(四) 线程清理和控制 pthread_cleanup_push()函数 pthread_cleanup_pop()函数 线程和进程的启动和终止比较
【代码】Linux多线程C++版(四) 线程清理和控制 pthread_cleanup_push()函数 pthread_cleanup_pop()函数 线程和进程的启动和终止比较。原创 2022-11-21 17:44:26 · 436 阅读 · 0 评论 -
Linux多线程C++版(一) 线程基础 进程和线程关系 线程分类 Linux线程实现 线程表示
线程和进程的关系:线程是属于进程的,线程运行在进程空间内,同时进程所产生的线程共享同一用户内存空间,并当进程退出时该进程所产生的线程都会被强制退出并清除。一个进程至少需要一个线程作为它的指令执行体(一般也称为主线程),进程管理着资源(比如CPU,内存,文件等等),并把线程分配到某个CPU上执行。一般一个进程在最开始的时候是有一个线程,这个线程称为主控线程(主线程),同时可以通过主线程去创建多个线程,这种线程称为子线程。原创 2022-11-15 21:00:55 · 559 阅读 · 0 评论 -
Linux多线程C++版(五) 线程初始化和销毁 pthread_attr_t attr结构定义 pthread_attr_init()函数 pthread_arrt_destroy()函数
【代码】Linux多线程C++版(四) 线程初始化和销毁 pthread_attr_t attr结构定义 pthread_attr_init()函数 pthread_arrt_destroy()函数。原创 2022-11-23 21:16:30 · 930 阅读 · 0 评论 -
Linux多线程C++版(二) 线程创建 pthread_create()函数
如:int i或者指针 r都是每个线程自己数据不会相互影响,但是如果是。默认情况下不能保存新线程和调用线程的执行顺序,但是可以人工干预。新创建线程从start_rtn函数的地址开始运行。原创 2022-11-16 19:56:54 · 1779 阅读 · 0 评论 -
Linux多线程C++版(三) 线程终止 pthread_cancel()函数 pthread_exit()函数 pthread_join()函数
由于一个进程中的多个线程共享数据段,因此通常在线程退出后,退出线程所占用的资源并不会随线程结束而释放。如果想要立即释放就必须在主控线程中使用pthread_join函数来等待线程结束,这样线程才会释放干净。pthread_join是主控线程调用的,表示自己会阻塞,直到rabbit线程结束 主控线程方可运行。retval:线程创建时,需要运行函数,pthread_exit 的参数就为这个函数的返回值,可由其他函数和pthread_join来检测获取。作用:谁调用谁阻塞,直到第一个参数的线程执行完毕。原创 2022-11-18 20:50:08 · 1193 阅读 · 0 评论 -
Linux多线程C++版(六) 线程同步和线程互斥
1.线程同步和线程互斥2.线程互斥案例---ATM取钱--没有使用互斥锁3.线程互斥----互斥锁(互斥量)4.互斥锁创建和销毁5.互斥锁上锁和解锁6.线程互斥案例---ATM取钱--使用互斥锁7.互斥锁属性创建和销毁8.互斥锁属性之一---进程共享属性操作9.互斥锁属性之一----互斥锁类型操作10.代码了解互斥锁属性原创 2022-11-26 11:22:54 · 789 阅读 · 0 评论 -
Linuxd的内核定时器 timer_list
内核定时器是内核用来控制在未来某个时间点(基于jiffies(节拍总数))调度执行某个函数的一种机制,相关函数位于 和 kernel/timer.c 文件中。 当内核定时器定时时间到达时,会进入用户指定的函数,相当于软中断。内核定时器注册开启后,运行一次就不会再运行(相当于自动注销),我们可以重新设置定时器的超时时间,让定时器重复运行。原创 2022-11-26 20:14:31 · 499 阅读 · 0 评论