多线程并行执行能够大大提升程序运行效率,但是也要注意随之带来的线程间同步问题,避免竞态条件("Race Condition")引起的难以发现的bug。这篇总结一下线程的创建和销毁、等待和恢复、加锁和解锁、锁的类型以及在某些情况下可以替代锁的原子操作。
启动线程
创建 std::thread
对象可以启动一个线程,例如:
```c++
include
include
void worker()
{
for (size_t i = 0; i < 10; ++i)
{
std::cout << "thread: " << std::this_thread::get_id() << std::endl;
}
}
int main()
{