当前位置:  技术问答>linux和unix

求助:linux 下的多线程编程

    来源: 互联网  发布时间:2016-07-28

    本文导语:  要求写一个程序: 编写一个多线程的应用程序(memtest.c),采用多线程并发的方式进行“并行”运算。该程序要解决的问题是“内存测试”,即测试一段内存是否可靠。这段内存在进程空间内分配,大小不应小于1MB...

要求写一个程序:
编写一个多线程的应用程序(memtest.c),采用多线程并发的方式进行“并行”运算。该程序要解决的问题是“内存测试”,即测试一段内存是否可靠。这段内存在进程空间内分配,大小不应小于1MB。 

内存测试算法
对任一被测内存单元,先写入一个数,再从该单元读出,比较写入和读出的数是否相等。如果相等,说明该单元功能正常,否则就不正常。对一个单元,要用如下5种数据测试: 
1. 全0,即0 
2. 全1,即0xFF 
3. 01010101,即0x55 
4. 10101010,即0xAA 
5. 随机数


主线程就是进程
主线程功能建立后直接拥有的线程。它用命令行方式和用户交互,接受用户的命令,进行相应的工作,打印状态信息。命令包括: 
1. times number :设置对每个内存单元进行测试的次数。number即次数。每次测试都要测完全部的5种数据。例如,命令“times 5”表示对每个内存单元,每种数据都要测5次。 
2. thread number :设置进行测试工作的线程个数。number即个数。主线程并不算在number内。例如,命令“thread 2”表示同时建立2个工作线程进行并发测试。 
3. go:按照设定的参数建立工作线程,开始测试。主线程仍然在命令行等待用户命令。 
4. status:打印所有工作线程的工作状态,包括它们的当前进度和测试结果等。 
5. abort:停止测试。让所有工作线程都退出。 
6. exit:停止测试并退出程序。


工作线程功能
该程序始终只有主线程和用户交互,工作线程即不打印信息,也不读用户的输入。主线程和工作线程之间通过全局变量进行信息传递。工作线程唯一的功能是对主线程分配给它的内存区间进行测试。 


PS:
在工作线程中接受用户输入命令式怎么实现呢

|
 主线程死循环;用户输入存放在全局变量中;同时设置一个全局flag;如果主进程授收到新的用户输入,就修改flag的值;工作线程死循环,并用条件变量来检查flag的值,如
                                 if(strcmp(flag,"times number")!=0)
                                    pthread_cond_wait(&cond,&lock);
如果flag等于某个命令,就进行相应的操作;主线程在改变flag 的值的时之后,应用pthread_cond_broadcast唤醒所有阻塞的工作线程。

|
工作线程功能 
该程序始终只有主线程和用户交互,工作线程即不打印信息,也不读用户的输入。主线程和工作线程之间通过全局变量进行信息传递。工作线程唯一的功能是对主线程分配给它的内存区间进行测试。 


PS: 
在工作线程中接受用户输入命令式怎么实现呢

工作线程可以这样设置,它可以循环工作,每次工作到一段执行点,就读取某段用于与主线程通信的内存,然后去执行对应的指令。

|
 谢谢
是我们操作系统课程的实验
哈哈

===========================

既然楼主这么豪爽,我说一下.
在主线程与两个工作线程之间使用共享内存通信,在它里面用semaphore来锁
住各个条件变量,只有条件满足才释放sem.


    
 
 

您可能感兴趣的文章:

  • 紧急求助java多线程编程!!!!!!!!!!!!!
  • 求助,线程的回收
  • socket实现多文件并发传输,求助多线程实现问题?
  • 求助Linux下怎样查看线程状态?
  • 线程内部的errno问题求助
  • Opengl Linux多线程 求助
  • 求助多线程问题
  • 求助:Linux下线程编程的问题~~~~~~~~~~~~~~~~~~~`
  • 求助:关于单线程recv时的超时问题
  • 求助!Linux下socket编程,服务端与多线程的问题
  • ■■求助■■ 如何查看一个进程拥有的线程数量???
  • 【求助】在主线程里如何终止子线程的执行?
  • 求助!Linux多线程问题
  • 求助!!!多线程+多个epoll_wait问题
  • 求助!pthread与Win32 API线程库的对应问题
  • 【求助】如何使运行中的线程挂起?
  • 求助linux下socket多线程编程的例子(C语言写的)
  • (100分求助)用内核线程对用户进程操作(大侠/虾们出手了)
  • 求助!关于多线程下数据库操作的问题,请大家帮忙看看
  • MM求助:怎样多线程下载http://java.sun.com上的东东? 用http方式,谢谢了.
  • 求助:linux/unix网络编程
  • 求助linux下的网络编程问题
  • 新手求助KDE编程起步
  • 我的linux下无法进行console图形编程,求助!!!
  • [高分求助]------如何在linux下编程实现录音
  • linux下图形编程入门求助
  • 求助:谁有KDevelop编程的中文介绍?
  • 求助:在模块编程下,如何进行debug??
  • 在Linux的Eclipse中用C语言编程,求助
  • Solaris下编程求助
  • 大侠,求助!!LINUX下TCP套接字编程中客户端出现段错误
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求助:linux下 vim的配置(高分求助)
  • 求助!为什么linux下FTP允许windows登录而不允许linux登录?在线等
  • 求助关于linux和windows引导lilo的问题
  • 求助!!怎么在linux交叉环境下移植SOAP协议?
  • 新装linux求助
  • 求助:新氧Linux中文定制版V0.1主题包
  • linux webserver求助一下
  • 100分求助:关于linux下配置sendmail的问题
  • 急求助!安装linux后重装windows的问题
  • 求助,linux下如何使用函数更改时区,例如设置美国时区 谢谢
  • mini2440开发,linux求助
  • linux的 iptables问题求助
  • 求助~~求助 ~~linux文件读写问题
  • 求助:linux系统断电后无法正常启动
  • 求助访问linux下jboss应用程序?
  • linux配置samba服务器求助!!!
  • 【求助】如何通过外网访问Linux服务器?
  • 求助,在Linux下当文件夹大小超过1G时,删除文件夹内容
  • 急!!!小弟刚刚接触linux 在线求助<很简单的问题>
  • 求助:linux的端口号开启缓慢
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3