![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++多线程基础
ht6806
这个作者很懒,什么都没留下…
展开
-
pragma omp parallel for
原创 2023-11-13 11:13:20 · 792 阅读 · 0 评论 -
五 线程池
线程池一般是要复用线程,如果取一个task就分配个一个thread,执行完成之后再重新分配,是不现实的:c++的thread都是执行一个固定的函数,函数完成之后线程也就结束了。让每个thread创建之后,就去执行调度函数,循环获取task,然后执行;当线程池停止使用时,循环便停止,这样就保证了thread函数的唯一性,而且复用线程执行task;线程池中的线程会持续查询任务中是否有可用工作,当两个或者多个线程试图同时执行查询工作时,将会引发错误;所以,可以提前开辟好线程,等待任务来了之后进行处理。原创 2023-11-08 10:50:21 · 29 阅读 · 0 评论 -
[四] 条件变量
3)当线程获取通知被唤醒之后(notify_one等),wait( )会自动调用std::mutex的lock( )使用std::condition_variable可以让消费者线程等待生产者线程生产出数据之后,再进行消费,避。2)当前线程被阻塞时,wati( )函数自动调用std::mutex的unlock( )释放锁,使得其他被阻塞。1)当前线程中使用wait( )后之后将被阻塞,直到另外一个线程中使用notify_one,可唤醒当。1)当条件为false时,线程会被阻塞;在锁竞争上的线程能够继续;原创 2023-11-06 08:29:52 · 21 阅读 · 0 评论 -
三 单例模式、call_once使用
原创 2023-11-04 08:53:07 · 40 阅读 · 1 评论 -
二 互斥量、lock_guard、unique_lock
lock_guard类构造函数被调用的时候自动加锁,构造函数被调用的时候自动解锁;(std::chrono::seconds(2)):如果无法获取锁,等待2s;mtx.lock();获取互斥量的所有权,互斥量的加锁。释放互斥量的所有权,互斥量的解锁。② std::defer_lock:不加锁,等待延迟。① std::timed_mutex:时间锁。):unique_lock的。原创 2023-11-03 08:08:04 · 27 阅读 · 0 评论 -
一 Thread线程库的基本使用
t.join( )在delete ptr前、后,得出的结果是不一样的。类中公有成员函数作为线程函数;类中私有成员函数作为线程函数;1.传入临时变量std::ref()4. 类中的函数、私有函数。原创 2023-11-03 07:52:05 · 21 阅读 · 0 评论