线程学习八:C++11 线程对象创建后既不join()也不detach()的后果
摘要:C++11中,线程对象(std::thread)创建后,有两种状态: joinable nonjoinable 线程对象通过默认构造函数构造后状态为nonjoinable;线程对象通过有参构造函数创建后状态为joinable。joinable状态的线程对象被调用join()或者detach()会变成
阅读全文
posted @
2022-03-04 15:36
JJ_S
阅读(545)
推荐(0) 编辑
线程学习七:几个例子
摘要:#1. 主线程中创建2个子线程,子线程按顺序执行 && 主线程比子线程结束晚 // 在子线程中通过join()方法指定顺序 #include <iostream> #include <thread> #include <chrono> // C++里处理多线程的头文件是thread using na
阅读全文
posted @
2022-03-04 15:22
JJ_S
阅读(62)
推荐(0) 编辑
线程学习六:pthread使用barrier栅栏方式同步
摘要:Linux中提供了多种同步机制,其中使用barrier(栅栏)是多线程之间进行同步的方法之一。 基本原理: 假设多个线程约定一个栅栏,只有当所有的线程都达到这个栅栏时,栅栏才会放行,否则到达此处的线程将被阻塞。 使用场景: 程序启动的时候,需要建立一个独立的线程去做一些特殊的工作。比如这个线程需要初
阅读全文
posted @
2022-03-04 14:29
JJ_S
阅读(1205)
推荐(0) 编辑
线程学习五:线程加锁(2)--pthread
摘要:pthread加锁 参考: https://blog.csdn.net/xiaolong1126626497/article/details/122362586
阅读全文
posted @
2022-03-04 14:13
JJ_S
阅读(59)
推荐(0) 编辑
线程学习五:线程加锁(1)
摘要:#1.锁:mutex(互斥量) 锁,是生活中应用十分广泛的一种工具。锁的本质属性是为事物提供“访问保护”,例如:大门上的锁,是为了保护房子免于不速之客的到访; 自行车的锁,是为了保护自行车只有owner才可以使用;保险柜上的锁,是为了保护里面的合同和金钱等重要东西…… 在c++等高级编程语言中,锁也
阅读全文
posted @
2022-03-03 17:49
JJ_S
阅读(302)
推荐(0) 编辑
线程学习四:连接和分离线程
摘要:1.std::thread方法 在声明一个std::thread对象之后,都可以使用detach和join函数来启动被调线程,区别在于两者是否阻塞主调线程。 (1)当使用join()函数时,主调线程阻塞,等待被调线程终止,然后主调线程回收被调线程资源,并继续运行; (2)当使用detach()函数时
阅读全文
posted @
2022-03-03 17:42
JJ_S
阅读(570)
推荐(0) 编辑
线程学习三:创建线程
摘要:1. 线程创建 1.1 std::thread创建线程 用普通函数创建线程 用成员函数创建线程 用类对象创建线程 用Lambda表达式创建线程 1.1.1 用普通函数创建线程 #include <iostream> #include <thread> void foo(int a) { std::c
阅读全文
posted @
2022-03-03 13:59
JJ_S
阅读(133)
推荐(0) 编辑
线程学习二:std::thread与pthread对比
摘要:1. std::thread与pthread对比 std::thread是C++11接口,使用时需要包含头文件#include <thread>,编译时需要支持c++11标准。thread中封装了pthread的方法,所以也需要链接pthread库 pthread是C++98接口且只支持Linux,
阅读全文
posted @
2022-03-03 11:08
JJ_S
阅读(9222)
推荐(1) 编辑
线程学习一:多线程与多进程
摘要:在一台计算机中,我们可以同时打开许多软件,比如同时浏览网页、听音乐、打字等等,看似非常正常。但仔细想想,为什么计算机可以做到这么多软件同时运行呢?这就涉及到计算机中的两个重要概念:多进程和多线程了。 1.多进程 进程是程序在计算机上的一次执行活动,即正在运行中的应用程序,通常称为进程。当你运行一个程
阅读全文
posted @
2022-03-02 19:49
JJ_S
阅读(232)
推荐(0) 编辑