We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 2fcce3b commit 0af8980Copy full SHA for 0af8980
1 file changed
qiujingGit.md
@@ -15,6 +15,21 @@ timezone: UTC+8
15
## Notes
16
17
<!-- Content_START -->
18
+# 2025-08-21
19
+
20
+### 进程,线程,协程的区别
21
+- 进程是独立的程序实例,资源隔离但开销大
22
+- 线程是进程内的执行流,共享资源且开销中等
23
+- 协程是用户态的轻量级线程,开销极小但需要程序主动调度
24
25
+### golang中多个协程针对共享数据的访问,为什么会存在数据竞争的情况
26
+本质原因是多个协程的并发执行特性与共享数据的非原子操作之间的矛盾
27
+- 协程的并发执行特性,Go 语言的协程由 runtime 调度,多个协程可能在不同的 CPU 核心上并行执行,或在同一核心上快速切换执行,切换时机不确定。
28
+- 非原子操作的拆分执行,看似简单的操作(如 i++)在底层会被拆分为多个 CPU 指令(读取、修改、写入)
29
+- 缓存一致性问题,现代 CPU 都有缓存机制,不同核心上的协程可能看到共享数据的不同缓存副本,需要同步机制(sync.Mutex、channel)
30
31
+### 带缓冲的 channel 使用环形队列(circular queue)数据结构
32
33
# 2025-08-20
34
35
### 观看两场知识分享会
0 commit comments