当前位置: 首页 > news >正文

网站开发需求说明书网络推广

网站开发需求说明书,网络推广,网站代码如何优化,桃城网站建设公司✊✊✊#x1f308;大家好#xff01;本篇文章主要整理了部分多线程相关的内容重点#x1f607;。首先讲解了多进程和多线程并发的区别以及各自优缺点#xff0c;之后讲解了Thead线程库的基本使用。 本专栏知识点是通过零声教育的音视频流媒体高级开发课程进行系统…✊✊✊大家好本篇文章主要整理了部分多线程相关的内容重点。首先讲解了多进程和多线程并发的区别以及各自优缺点之后讲解了Thead线程库的基本使用。 本专栏知识点是通过零声教育的音视频流媒体高级开发课程进行系统学习梳理总结后写下文章对音视频相关内容感兴趣的读者可以点击观看课程网址零声教育 导航小助手 一、多进程与多线程二、Thead线程库的基本使用三、小结 一、多进程与多线程 首先有一个直观的理解   1.进程就是运行中的程序   2.线程就是进程中的进程 操作系统中可以有多个进程一个进程中也可以有多个线程。 1.1 多线程并发 多进程并发是将一个应用程序划分为多个独立的进程每个进程只有一个线程这些独立的进程之间相互可以通信共同完成任务。操作系统常常对进程提供大量的保护机制避免出现一个进程修改其他进程的数据因此相对于多线程使用多进程更容易写出相对安全的代码。但这也造成了多进程并发存在两个不足之处 进程间的通信无论是使用信号、套接字、还是文件、管道等方式其使用要么比较复杂要么就是速度较慢或者两者兼而有之。运行多个线程需要操作系统花费很多资源进行管理。 在多个进程并发完成一个任务时常会出现操作同一个数据以及进程之间的相互通信因此多进程并发不是一个很好的选择。 1.2 多线程并发 多线程并发同一个进程中执行多个线程。 优点线程是轻量级的进程每个线程可以独立的运行不同的指令序列且线程不独立拥有资源依赖于创建它的进程而存在。 同一进程中的多个线程能够很方便的进行数据共享以及通信比进程更适用于并发操作。 不足缺少操作系统提供的保护机制。在多线程共享数据及通信时需程序员做更多的操作并且还需极力避免死锁。 二、Thead线程库的基本使用 2.1 创建线程 要创建线程我们需要一个可调用的函数或函数对象作为线程的入口点。 在C11中我们可以使用函数指针、函数对象或lambda表达式来实现。 创建线程的基本语法如下 #include threadstd::thread t(function_name, args...);function_name是线程入口点的函数或可调用对象args...是传递给函数的参数 创建线程后我们可以使用t.join()等待线程完成或者使用t.detach()分离线程让它在后台运行。 实例1 #include iostream#include threadusing namespace std;void doit() { cout World! endl; }int main() {thread a([] {cout Hello, flush;}), b(doit);a.join();b.join();return 0;}运行结果 上面两次结果并不相同这是因为多线程运行时是以异步方式执行的与我们平时写的同步方式不同。异步方式可以同时执行多条语句谁先执行得快谁先执行完。 实例2 #include iostream#include threadusing namespace std;void thread_1(){cout线程tendl;}void print_message(const string message) { cout message endl;cout 线程 t endl;}void increment(int x) { x;cout 线程 t2 endl;}int main() { cout 主线程1\n;thread t(thread_1);// 开启线程t调用thread_1()t.join();cout 子线程t结束\n;string message Hello, world!; thread t1(print_message, message);// 开启线程t1调用print_message()t1.join(); int x 0; thread t2(increment, ref(x));//开启线程t1调用increment() t2.join(); cout 子线程t2结束\n;cout x endl; cout 全部子进程结束\n;return 0;}运行结果 从上面结果我们很明显能看出使用t.join()后程序需要等待进程t结束后才会接着进行。 注意thread在传递参数时是以右值传递的。 我们在传递引用的时候需要用到std::ref和std::cref std::ref 可以包装按引用传递的值。std::cref 可以包装按const引用传递的值。 2.2 join与detach方式 当线程启动后一定要在和线程相关联的thread销毁前确定以何种方式等待线程执行结束。比如上 例中的join。 • detach方式启动的线程自主在后台运行当前的代码继续往下执行不等待新线程结束。 • join方式等待启动的线程完成才会继续往下执行。 可以使用joinable判断是join模式还是detach模式。 示例1join举例 #include iostream#include threadusing namespace std;void thread_1() {while (1) {cout子线程1endl;}}void thread_2(int x) {while (1) {cout子线程2endl;}}int main() {thread first(thread_1);// 开启线程调用thread_1()thread second(thread_2, 100);// 开启线程调用thread_2(100)first.join(); // pauses until first finishes 这个操作完了之后才能destroyedsecond.join(); // pauses until second finishes//join完了之后才能往下执行。while (1) {std::cout 主线程\n;}return 0;}线程1和线程2写的是死循环那么在两个子线程没结束前主线程不会执行。 示例2detach举例 #include iostream#include threadusing namespace std;void thread_1() {while (1) {cout子线程1endl;}}void thread_2(int x) {while (1) {cout子线程2endl;}}int main() {thread first(thread_1);// 开启线程调用thread_1()thread second(thread_2, 100);// 开启线程调用thread_2(100)first.join(); // pauses until first finishes 这个操作完了之后才能destroyedsecond.join(); // pauses until second finishes//join完了之后才能往下执行。while (1) {std::cout 主线程\n;}return 0;}运行结果 可以看出主线程不会等待子线程1和2结束。如果主线程运行结束程序则结束。 2.3 joinable joinable()返回一个bool值判断是join模式还是detach模式。 使用方法 if (myThread.joinable()) 1 foo.join();三、小结 多进程安全但是浪费操作系统资源且进程间相互通信比较麻烦。多线程则可以很好的处理这两个问题但是使用时需要使用更多操作确保安全。C11提供了语言层面上的多线程包含在头文件中。它解决了跨平台的问题提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。主要讲解了Thead线程库的基本使用包括join()、joinable()和detach()并举了很多例子进行补充。 感谢大家阅读 接下来还会继续更新多线程相关知识感兴趣的可以看其他笔记
http://www.dnsts.com.cn/news/107921.html

相关文章:

  • 红鱼洞水库建设管理局网站微信小游戏开发
  • 怎么做flash网站台州网站建设方案推广
  • 医院网站页面设计北京软件公司排行
  • 如何做微信ppt模板下载网站辽宁seo站内优化
  • 用返利网站做爆款莱芜杂谈话题
  • 网站的建设方法不包括什么嘉峪关建设路小学网站
  • 方城网站设计市场调研公司是做什么的
  • 网站关键词优化seo关键词之间最好用逗号金站网.营销型网站
  • 上海电商网站建设公司排名哈尔滨建工建设
  • 网站有标题uc浏览网页版进入
  • 时代创信网站建设慧生活798app下载
  • 抚州市网站建设自己做服务器的网站
  • 东莞网站程序网站制作需要注意什么
  • 江西建设厅培训网站wordpress购物车功能
  • 做网站一般工资如何免费免费建站
  • 在婚恋网站上做红娘怎么样合肥建站公司哪
  • 常州企业网站建设价格支持企业网站发布要怎么做
  • python做网站表白爱站网站seo查询工具
  • 网站如何验收quick chat wordpress
  • 公司做网站 需要准备什么汕尾手机网站开发
  • 网站正在建设 英文翻译百度搜索站长平台
  • 县级林业网站建设管理大连六兄弟网站建设
  • 建设部监理网站官网服务器租赁合同范本
  • 做网站6000左右的电脑wordpress编译太慢
  • 中国小说网站策划与建设国内做网站网站
  • 淘宝客导购网站怎么做wordpress开启远程发布
  • 外贸汽车配件做那个网站仙桃网站设计公司
  • 网站推广 优帮云大连哪家科技公司做网站好
  • 网站开发与规划网络营销推广专员主要工作内容
  • 网络整合营销4i原则是指seo软件开发