Skip to content

Commit 0af8980

Browse files
committed
Add study notes for 2025-08-21
1 parent 2fcce3b commit 0af8980

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

qiujingGit.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,21 @@ timezone: UTC+8
1515
## Notes
1616

1717
<!-- 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+
1833
# 2025-08-20
1934

2035
### 观看两场知识分享会

0 commit comments

Comments
 (0)