加载《操作系统课程设计代码中的常见错误总结》成功,点击此处阅读
首页 →文档下载

操作系统课程设计代码中的常见错误总结

以下为《操作系统课程设计代码中的常见错误总结》的无排版文字预览,完整内容请下载

代码中的常见错误

程序正确性测试方法:

(1)先去除程序中的多线程,使其变成一个普通的C++程序。

(2)然后将该程序中的各个函数反复调用多次,模拟多次添加、删除、查询等数据操作。

(3)每次操作后,输出结果查看一下。如果发现结果错误,或者出现程序非法结束的情况,说明你的代码内部有问题。这时,你的问题比较难以发现,你需要仔细分析可能出现 错误的函数,最有可能出现错误的函数是删除函数和clear函数。用VC++的单步调试方法调试你的程序

(4)直到程序运行结果正确。再加入多线程机制,看在多线程下运行是否也能正确。

错误代码举例 【请大家仔细阅读,看自己是否也犯有这些错误】:

(1)代码缺乏全面测试。发给我的代码和最终提交代码后面,必须给出输入数据和测试结果。

int QueueEmpty()

{

if(this->m_Q.front==this->m_Q.rear)

return 1;

else 啥也不做,不能实现清空队列的操作

return 0;

}

(2)return 1; 后面的语句永远无法执行

int InitQueue()

{

WaitForSingleObject(mutex,INFINITE);

。。。。。此处省略具体代码

return 1; 运行至此,函数返回,后面的语句无法执行

ReleaseMutex(mutex);

}

(3)mutex使用前没有先调用CreateMutex()创建互斥量mutex,就直接使用。

HANDLE mutex;

WaitForSingleObject(mutex,INFINITE);

(4)代码缺少注释。 没有详细注释的代码,最终成绩最高为“中”。

写代码注释的另一个好处是,能够帮你理顺思路,帮你发现程序上的逻辑错误。前面举的错误例子,如果你有代码注释,就一定能够发现。

代码注释就是你用简洁的文字把你的“代码逻辑、变量的作用、函数的作用、语句的作用”等内容解释给其他人听,要求是别人看了你的代码注释,就能够领会你的代码意图。

(5)如果你写的是多线程安全的数据结构(栈、队列、链表等),要参考课本上的读者-写者问题的解决方法,查询是读者,插入、删除或修改是写者,要实现读写互斥和写写互斥。

这一点非常重要,很多同学的代码中使用一个mutex互斥量,实现所有操作的保护,这些代码都是不合格的。要求多个线程可以同时执行查询函数,但每次只允许一个线程修改数据。

int EnQueue(QElemType e)

{

WaitForSingleObject(mutex,INFINITE);

。。。。。。具体代码省略

ReleaseMutex(mutex);

}

int DeQueue()

{

WaitForSingleObject(mutex,INFINITE);

。。。。。。具体代码省略

ReleaseMutex(mutex);

}

int PrintQueue()

{

WaitForSingleObject(mutex,INFINITE);

。。。。。。具体代码省略

ReleaseMutex(mutex);

}

(6)这是一个非常普遍存在的问题:向文件中写入数据之前,没有用互斥量进行写文件的保护。试想:如果恰好有两个线程同时向文件的同一地方写入数据,会发生什么后果?

//生产者线程

unsigned __stdcall Producer (void* para)

内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 的问题。

Push(S,b);

Sleep(1000);

Push(S,c);

Sleep(1000);

加入Sleep()后,会使当前线程挂起,产生线程切换,你调用Sleep(1000),在这一秒内,其他线程可能已经运行完毕,也就是说,你的代码变成了“你干活,我睡觉”、“我干活,你睡觉”的多线程“串行”执行的程序,很难检查出你的代码问题。

其它小问题:

(1)全局变量的名字要有意义,不要用i,j,k,t作为全局变量,要用gThreadCount、gMatrix这种有意义的全局变量名字。

(2)程序结束前,没有调用CloseHandle()关闭线程、信号量等资源的句柄。

[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。

  1. 破解压轴题有效10招
  2. 测试摸底试卷
  3. 2020届高考数学(理)二轮复习专题检测(3)导数及其应用
  4. 不要用的单词大全
  5. 最新麦肯锡PPT实用图表模板
  6. 温总理在剑桥大学的演讲—— 用发展的眼光看中国
  7. JavaWeb开发技术作业08--JDBC4
  8. SL 六年级上 Unit4 Feelings 知识点
  9. **_*考英语模拟试题.4.12
  10. 实验12 异常
  11. 产测流程概要设计
  12. Chapter 12单词
  13. 项目框架说明文档
  14. 技能大赛作文模板1
  15. WHO新冠疫苗技术线路(英文)
  16. Java面向对象总结
  17. 42号传祺(英文剧本)
  18. 代码评审规则指南
  19. 《一次函数与一元一次不等式》教学反思
  20. 第7讲 C 中的类、结构体、指针和引用、

以上为《操作系统课程设计代码中的常见错误总结》的无排版文字预览,完整内容请下载

操作系统课程设计代码中的常见错误总结由用户“xinghen86”分享发布,转载请注明出处
XXXXX猜你喜欢
回顶部 | 首页 | 电脑版 | 举报反馈 更新时间2021-05-02 08:41:51
if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/4a/4d/57283.html'}ipt>if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/4a/4d/57283.html'}ipt>