Arc

1

并发:Send、Sync、Arc 和 Mutex

5 分钟

C 里写线程并发,基本工具很直接:

pthread_create(&tid, NULL, worker, ctx);
pthread_mutex_lock(&lock);
/* modify shared state */
pthread_mutex_unlock(&lock);

这些工具能写出可靠系统,但规则主要靠人维护:

  • ctx 指向的数据能不能跨线程使用
  • 谁拥有这块数据
  • 多个线程是否同时读写
  • 有没有忘记加锁
  • 锁保护的到底是哪几个字段
  • 回调和线程退出时资源是否还活着

Rust 没有让并发自动变简单。它做的是把一部分线程安全要求放进类型系统:

阅读更多