单核和多核的多线程问题

wangericac 2008-06-15 04:03:50
为什么我编写的c语言的多线程程序在单核机器上可以正确运行,但是在双核和多核机器上却不能正确运行啊?请各位高手能够赐教!小弟在此谢过啦!
...全文
401 15 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
关键代码贴出来看看

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧