一个关于线程的面试题。

bestlife 2006-05-22 10:28:48
线程的建立、销毁、线程锁等。要求如下:
1.主线程创建两个子线程,一个每次往缓冲区里写入一个整数,一个每次从缓冲区里读出一个整数。
2.要确保当前缓冲区无数据时不能读,并且读写不能同时进行

——————————————
请问这个缓冲区要设置为正好存放一个整数的大小?还是整数大小的多倍?
如果正好是一个整数的大小的话,那么2个线程互斥读写这个缓冲区和用2个函数依次读写这个缓冲区是不是一样的速度(线程没有起到作用)?
还请高手给这个题目做个解答。
...全文
469 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
eqxu 2006-06-05
  • 打赏
  • 举报
回复
---------------------------------------------------------------------------------
Wolf0403(完美废人·不配奢求幸福)
因为涉及到 OS 的调度、上下文切换,所以不论缓冲区如何安排,在单 CPU 体系上都应该比单线程两个函数读写来的要慢吧。



------------------------------------------------------------------------------------
赞成!!!
除了一些状态信息之类的,最好在一个进程里实现之



Wolf0403 2006-06-05
  • 打赏
  • 举报
回复
对于另外一个问题。。

那么2个线程互斥读写这个缓冲区和用2个函数依次读写这个缓冲区是不是一样的速度(线程没有起到作用)?

因为涉及到 OS 的调度、上下文切换,所以不论缓冲区如何安排,在单 CPU 体系上都应该比单线程两个函数读写来的要慢吧。
吃狼的豆腐 2006-06-04
  • 打赏
  • 举报
回复
这个。。。。。。。。。。

无语ing
MagicCarmack 2006-06-04
  • 打赏
  • 举报
回复
看来偶还得加紧学习啊

我啃 2006-06-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/kenmark/archive/2005/09/16/482341.aspx
hslinux 2006-06-03
  • 打赏
  • 举报
回复
典型的PV操作。
逸学堂 2006-05-23
  • 打赏
  • 举报
回复
典型的读者写者问题,对数据加锁处理即可
屋顶上的老猫 2006-05-23
  • 打赏
  • 举报
回复
首先,你要了解多线程如果是工作在单CPU上,这是根据“时间片”来进行线程的切换!但是这种切换会随机造成共享数据的操作错误(一个典型的问题,就是售票窗口问题)正因为如此才必须要使用“同步机制”,也就是互斥、事件、关键代码段!

两个函数不断切换与多线程有本质上的区别!太多区别中一个最典型的就是:多线程需要操作系统的支持来保证线程函数之间的片切换!
jixingzhong 2006-05-23
  • 打赏
  • 举报
回复
请问这个缓冲区要设置为正好存放一个整数的大小?还是整数大小的多倍?
================================
题目要求的应该是 1 个整数空间。

需要考虑操作同步,
使用 P,V 元语 .....
YFY 2006-05-23
  • 打赏
  • 举报
回复
艾,楼主,这是考察你的思想而已,不要拘泥与具体的整数。

想象成1000*1000的数据,写入要多长时间,读出要多长时间,这段时间如果用函数的话用户响应就丢失了。

如果只是1个整数,直接用个全局变量就ok了,就不需要这样麻烦了。
bestlife 2006-05-22
  • 打赏
  • 举报
回复
如果缓冲区的大小是一次写入和读取的大小,那么用线程来实现轮流读写和用函数依次读写的速度哪个快?
xl5338870 2006-05-22
  • 打赏
  • 举报
回复
典型的读者写者问题,设置一个信号量保护缓冲区就行了。

69,368

社区成员

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

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