首页 / LINUX / c – 在linux上学习线程
c – 在linux上学习线程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c – 在linux上学习线程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1326字,纯文字阅读大概需要2分钟。
内容图文
![c – 在linux上学习线程](/upload/InfoBanner/zyjiaocheng/950/0b22abe8c573459ca09abb03f8ca665e.jpg)
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模式可以通过依次等待所有任务来模拟,因为它无论如何都不会继续,直到所有对象都准备就绪.
内容总结
以上是互联网集市为您收集整理的c – 在linux上学习线程全部内容,希望文章能够帮你解决c – 在linux上学习线程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。