并发:Send、Sync、Arc 和 Mutex
C 里写线程并发,基本工具很直接:
pthread_create(&tid, NULL, worker, ctx);
pthread_mutex_lock(&lock);
/* modify shared state */
pthread_mutex_unlock(&lock);
这些工具能写出可靠系统,但规则主要靠人维护:
ctx指向的数据能不能跨线程使用- 谁拥有这块数据
- 多个线程是否同时读写
- 有没有忘记加锁
- 锁保护的到底是哪几个字段
- 回调和线程退出时资源是否还活着
Rust 没有让并发自动变简单。它做的是把一部分线程安全要求放进类型系统:
阅读更多