摘要: 1 前言 这节,我们来系统地聊聊死锁的问题。 死锁的概念; 模拟死锁问题的产生; 利用工具排查死锁问题; 避免死锁问题的发生; 2 死锁的概念 在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的线程就 阅读全文
posted @ 2023-06-16 15:43 酷酷- 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 1 前言 对于共享资源,如果没有上锁,在多线程的环境里,那么就可能会发生翻车现场。这节我们来看看操作系统中避免多线程资源竞争的互斥、同步的方法。 2 竞争与协作 在单核 CPU 系统里,为了实现多个程序同时运行的假象,操作系统通常以时间片调度的方式,让每个进程执行每次执行一个时间片,时间片用完了,就 阅读全文
posted @ 2023-06-16 15:09 酷酷- 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们来看看进程间的通信方式哈。 每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。 Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些? 2 管道 管道分两种类型:匿名管道、命名管道 如果你学过 Li 阅读全文
posted @ 2023-06-16 07:42 酷酷- 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们来看看进程、线程的一些基础知识哈。 2 进程 我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被称为「进程」(Process)。 现在我们 阅读全文
posted @ 2023-06-16 06:57 酷酷- 阅读(30) 评论(0) 推荐(0) 编辑