ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

c – 在linux上学习线程

2019-10-08 12:50:27  阅读:239  来源: 互联网

标签:stdthread c c11 linux pthreads


Linux对我来说是一个新平台.我已经在Windows上用c编码了很多年,并且已经熟悉该平台上的多线程.

当我需要在linux平台上学习c时,C 11就出现了.

Linux似乎在大多数情况下使用pthreads – 好吧还有boost :: threads和QT也有自己的线程.但是随着C 11出现了std :: thread,一种全新的(跨平台和C标准)做线程的方式.

所以我想我将不得不学习pthreads和std :: threads.最终,std :: thread似乎更重要,但那里有很多遗留代码,所以我必须知道两者.

对于Windows上的线程同步,我将使用WaitForMultipleObjects等待许多任务完成,然后继续进一步的工作.

pthreads是否存在类似的同步机制?的std ::线程?

我已经看过pthread_join了,它似乎只能在一个线程上等待一次.我可能错过了另一个pthread电话吗?

解决方法:

std :: thread是boost::thread accepted into C++11,有一些额外的东西.我的理解是,如果使用std :: thread在代码中替换boost :: thread,它仍然应该编译并工作.

boost :: thread基于pthreads设计,在线程,互斥和条件变量上提供精简的C包装.线程取消虽然不在C 11的范围之内,因为没有协议如何在C中工作.

因此,通过学习pthreads,您还可以学习std :: thread概念. std :: thread在pthreads C API之上添加了大部分语法糖和便利函数.

关于WaitForMultipleObjects(),pthreads和std :: thread都没有提供类似于其bWaitAll = FALSE模式的任何东西,但是,它通常在UNIX上使用管道和select()进行模拟,或者在Linux上使用更现代的eventfd()和epoll(). . bWaitAll = TRUE模式可以通过依次等待所有任务来模拟,因为它无论如何都不会继续,直到所有对象都准备就绪.

标签:stdthread,c,c11,linux,pthreads
来源: https://codeday.me/bug/20191008/1872027.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有