今天在调试函数的时候,做了两个线程,一个线程用来发送消息,一个线程用来接收消息并将消息输出到文件。
可是,在函数执行的时候发现,发送线程线程创建成功,但是却总是不能执行到线程内。一头雾水,检查半天才发现,原来是main()函数中只创建了两个线程,线程创建成功即返回,根本没有线程执行的时间!
修改的方法很简单在main()函数return之前Suspendthread(Getcurrentthread())就可以了。
还有一个问题就是,接收函数接收消息后存储到文件中,最后的几条消息用fprintf()却没有保存到文件中。原因是系统先将其放入缓存中,以致最后的消息总是不能写到文件,最后的解决方法是在fprintf()函数后加fflush()。对于某些函数现将输出存到缓存里的情况也可以使用。
本文记录了一次调试经历,作者在实现消息发送与接收的多线程应用时遇到问题:发送线程无法正常执行及接收消息未能全部写入文件。通过调整main函数并使用SuspendThread和fflush函数解决了这两个问题。
569

被折叠的 条评论
为什么被折叠?



