社区
C语言
帖子详情
单核和多核的多线程问题
wangericac
2008-06-15 04:03:50
为什么我编写的c语言的多线程程序在单核机器上可以正确运行,但是在双核和多核机器上却不能正确运行啊?请各位高手能够赐教!小弟在此谢过啦!
...全文
401
15
打赏
收藏
单核和多核的多线程问题
为什么我编写的c语言的多线程程序在单核机器上可以正确运行,但是在双核和多核机器上却不能正确运行啊?请各位高手能够赐教!小弟在此谢过啦!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
EddyCoffee
2008-06-16
打赏
举报
回复
[Quote=引用 5 楼 stephenxu111 的回复:]
100%的是共享资源的问题,你的互斥机制不可靠,或者使用了对多线程支持的不好的库,这些在单核情况下,由于各线程之间实际上是顺序执行的,资源访问冲突体现的不明显,但到了多核或多cpu环境下,访问冲突的概率大大增加,自然原来互斥不完善的地方问题就暴露出来了。
[/Quote]
stephenxu111
2008-06-16
打赏
举报
回复
100%的是共享资源的问题,你的互斥机制不可靠,或者使用了对多线程支持的不好的库,这些在单核情况下,由于各线程之间实际上是顺序执行的,资源访问冲突体现的不明显,但到了多核或多cpu环境下,访问冲突的概率大大增加,自然原来互斥不完善的地方问题就暴露出来了。
stephenxu111
2008-06-16
打赏
举报
回复
这种问题,一般先还是要确定故障点。由于是多线程程序,而且你的结果是死机,所以一般的调试方法不好用。建议建立一个日志方式,比如把每个线程的关键执行点打到文件里,这样先确定死机的位置,再综合分析各个线程在死机时刻的状态(特别是共享资源的占用情况),就可以大概知道死机的条件和原因,再针对性地修改就容易多了。
另外,有很多硬件操作的时候有特殊要求,比如写入之前要清0,两次写入之间有时间间隔要求等等,仔细了解你的硬件的规格说明,确保一些关键操作的时序控制正确。
ForestDB
2008-06-16
打赏
举报
回复
code
tncqsy
2008-06-16
打赏
举报
回复
同时我觉得你在单核的时候,多运行几次应该也会出错,线程是交给系统的时间片来决定什么时候运行的
tncqsy
2008-06-16
打赏
举报
回复
LZ,我也是刚做了一个多线程编程程序,要是互斥都不会的先别写多线程的程序,看看互斥再写
互斥其实也挺简单的,我觉得哈,也许我还没有完全了解,但是只是初步使用的话,半天应该就能看明白
babyvox1999
2008-06-16
打赏
举报
回复
会死机。。。死锁?
zjw6861982
2008-06-16
打赏
举报
回复
[Quote=引用 6 楼 EddyCoffee 的回复:]
引用 5 楼 stephenxu111 的回复:
100%的是共享资源的问题,你的互斥机制不可靠,或者使用了对多线程支持的不好的库,这些在单核情况下,由于各线程之间实际上是顺序执行的,资源访问冲突体现的不明显,但到了多核或多cpu环境下,访问冲突的概率大大增加,自然原来互斥不完善的地方问题就暴露出来了。
[/Quote]
虽然不一定100%,但至少99%是这个问题。
xuefey
2008-06-16
打赏
举报
回复
银行家吃蛋糕的故事听说过没?如果没有的话,建议去看一下这方面的书
野男孩
2008-06-16
打赏
举报
回复
互斥机制都不熟悉,就写多线程程序???
好好看看<Window核心编程>吧
wangericac
2008-06-16
打赏
举报
回复
源码就不贴了!因为公司代码,需要保密!意思也就是使用函数并使用DMA0模式或PIC读写方式往硬件的外部存储器中写入数据!
DMA0模式也就是将数据的源地址和目的地址等信息告诉硬件,然后由硬件决定什么时候取数据并写到EMI中!
在使用多线程是就出现了单核可以正确运行,但使用双核机器或多核机器运行时就会死机,请高手指教!
另外,我对互斥机制不熟悉,请高手指导一下!
lyqiang00
2008-06-16
打赏
举报
回复
太深奥了
不懂!!
zenny_chen
2008-06-15
打赏
举报
回复
[Quote=引用 1 楼 ld_thinking 的回复:]
关键代码贴出来看看
[/Quote]
crocke
2008-06-15
打赏
举报
回复
不懂,顶
ld_thinking
2008-06-15
打赏
举报
回复
关键代码贴出来看看
多
核
和单
核
中多
线
程及单
线
程的特点
多
核
和单
核
中多
线
程及单
线
程的特点 附关键词 参考文献 排版正规
计算机后端-Java-Java
核
心基础-第19章 IDEA的使用与多
线
程 11. 单
核
与多
核
CPU的任务执行_并行与并发.avi
计算机后端-Java-Java
核
心基础-第19章 IDEA的使用与多
线
程 11. 单
核
与多
核
CPU的任务执
多
线
程与多
核
编程
多
线
程与多
核
编程
面向数据加密的多
核
多
线
程并行研究
在使用新平台并行开发板实现大数据分组加密的基础上,结合多
核
多
线
程技术和AES加密算法,设计出一套高计算速率的并行加密系统。重点讨论了如何实现并行计算,分析了并行平台的数据传输速率,并行加密吞吐率,及平台...
cordova插件开发 (手机单
核
多
核
)
使用cordova开平台开发 代码亲测亲手写的 可用 验证就是手机CPU的
核
数 只是android的实现没有写ios平台 在研究插件的人可以看一下 有详细的注释
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章