Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rcore-os
RCore Tutorial Book V3
提交
550b35b3
R
RCore Tutorial Book V3
项目概览
rcore-os
/
RCore Tutorial Book V3
9 个月 前同步成功
通知
3
Star
938
Fork
153
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
RCore Tutorial Book V3
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
550b35b3
编写于
7月 09, 2023
作者:
A
August Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix typos in ch8
上级
7b80faeb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
2 addition
and
2 deletion
+2
-2
source/chapter8/1thread-kernel.rst
source/chapter8/1thread-kernel.rst
+1
-1
source/chapter8/5concurrency-problem.rst
source/chapter8/5concurrency-problem.rst
+1
-1
未找到文件。
source/chapter8/1thread-kernel.rst
浏览文件 @
550b35b3
...
...
@@ -85,7 +85,7 @@
- 第 4~7 行我们声明线程函数接受的参数类型为一个名为 ``FuncArguments`` 的结构体,内含 ``x`` 和 ``y`` 两个字段。
- 第 15 行我们创建并默认初始化三个 ``pthread_t`` 实例 ``t0`` 、 ``t1`` 和 ``t2`` ,分别代表我们接下来要创建的三个线程。
- 第 16 行在主线程的栈上给出三个线程接受的参数。
- 第 9~12 行实现线程运行的函数 ``func`` ,可以看到它的函数签名符合要求。它实际接受的参数类型应该为我们之前定义的 ``FuncArguments`` 类型的指针,但是在函数签名中是一个 ``void *`` ,所以在第 10 行我们
我们
首先进行类型转换得到 ``FuncArguments*`` ,而后才能访问 ``x`` 和 ``y`` 两个字段并打印出来。
- 第 9~12 行实现线程运行的函数 ``func`` ,可以看到它的函数签名符合要求。它实际接受的参数类型应该为我们之前定义的 ``FuncArguments`` 类型的指针,但是在函数签名中是一个 ``void *`` ,所以在第 10 行我们首先进行类型转换得到 ``FuncArguments*`` ,而后才能访问 ``x`` 和 ``y`` 两个字段并打印出来。
- 第 17~19 行使用 ``pthread_create`` 创建三个线程,分别绑定到 ``t0~t2`` 三个 ``pthread_t`` 实例上。它们均执行 ``func`` 函数,但接受的参数有所不同。
编译运行,一种可能的输出为:
...
...
source/chapter8/5concurrency-problem.rst
浏览文件 @
550b35b3
...
...
@@ -193,7 +193,7 @@ A是共享变量。粗略地看,可以估计执行流程为:线程thr1先被
状态是安全的,是指存在一个资源分配/线程执行序列使得所有的线程都能获取其所需资源并完成线程的工作。如果找不到这样的资源分配/线程执行序列,那么状态是不安全的。这里把线程的执行过程简化为:申请资源、释放资源的一系列资源操作。这意味这线程执行完毕后,会释放其占用的所有资源。
我们需要知道,不安全状态并不等于死锁,而是指有死锁的可能性。安全
全
状态和不安全状态的区别是:从安全状态出发,操作系统通过调度线程执行序列,能够保证所有线程都能完成,一定不会出现死锁;而从不安全状态出发,就没有这样的保证,可能出现死锁。
我们需要知道,不安全状态并不等于死锁,而是指有死锁的可能性。安全状态和不安全状态的区别是:从安全状态出发,操作系统通过调度线程执行序列,能够保证所有线程都能完成,一定不会出现死锁;而从不安全状态出发,就没有这样的保证,可能出现死锁。
.. chyyuu 有一个安全,不安全,死锁的图???
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录