
线程
文章平均质量分 60
、、、、南山小雨、、、、
秋风吹湘水,落叶满南山.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
std::thread的接口使用
std::thread 类的 join() 函数用于等待一个 std::thread 对象所表示的线程结束运行。如果 std::thread 对象是可连接的,则调用 join() 函数会使当前线程(调用 join() 的线程)挂起(阻塞在这里),直到 std::thread 对象所表示的线程结束运行为止。一个 std::thread 对象是可连接的,当且仅当它所表示的线程正在运行且尚未被连接过(调用过 std::thread::join() 或 std::thread::detach() 函数)。原创 2022-12-29 11:14:58 · 739 阅读 · 0 评论 -
读写锁的使用
什么是互斥锁:当一个资源被一个线程的互斥锁锁定的时候,互斥锁会保存这个线程的id,此后只有这线程能解锁这个互斥锁,在解锁之前,包括这个线程本身的所有进程都无法访问这个资源。这个资源可以是一个或多个变量。什么是读写锁:读写锁对同一把读写锁上下文,有两个操作1.读锁操作,int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);2.写锁操作,int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);分为三种使原创 2022-02-14 11:26:56 · 1550 阅读 · 0 评论 -
死锁产生的各种情况
先了解下什么叫做死锁:一个或多个变量被可执行程序的其中一个线程锁住了,其他线程都无法访问这个资源,被阻塞在对这个资源访问前,但是锁住这个资源的线程本身也被锁住了,它也被阻塞在对这个资源访问的前面。那么为什么锁住资源的线程本身也被锁住了呢,这就是死锁产生的原因,比如这个线程锁住了资源,但是离开时忘记解锁,因此下次再来访问时也被阻塞住了。下面是一些死锁的情况,以下是伪代码:1,加锁之后忘记解锁void funcA(){ for (int i = 0; i < 10; i++)原创 2022-02-14 11:03:49 · 761 阅读 · 0 评论 -
互斥锁的使用,两个线程数数到100
什么是互斥锁:当一个资源被一个线程的互斥锁锁定的时候,互斥锁会保存这个线程的id,此后只有这线程能解锁这个互斥锁,在解锁之前,包括这个线程本身的所有进程都无法访问这个资源。这个资源可以是一个或多个变量。读写锁使用见:读写锁的使用打印结果如下:可以看出并没有数到100,这是为什么呢,因为两个线程没有同步,有时B线程因为睡眠,值还没来得及赋值给number,A线程又访问number。多核计算机两个线程如果跑在不同的核中,对number的访问是并行的,因此不能确保数到100。并且pthread_join(原创 2022-02-13 17:53:39 · 490 阅读 · 0 评论