【发布时间】:2012-05-25 12:14:51
【问题描述】:
我是多线程编程的新手,所以我想知道是否有人可以帮助我。
我必须编写一个程序来接收串行(和连续)异步消息,然后读取并组织此消息。
我正在尝试使用多线程策略:第一个线程负责接收串行信息并将其写入矩阵 (RxTh[col][row]),一次一行。 然后,调用第二个线程,读取 RxTh 矩阵的每一行并搜索特定字符(表示“开始行”消息)。该线程还必须将收到的消息放入另一个矩阵 (Msg[col2][row2]) 中,将 msg 的每一行分隔在新矩阵的不同行中。
将来,我将不得不处理这些重新排列的行,并搜索具体信息,但我现在不考虑这部分。
所以,我在使用这个程序时遇到了一些问题:
首先,当我停止写入以开始读取部分时,我丢失了一些串行消息。这就是我尝试使用互斥锁或临界区的原因。但它不起作用,我不知道为什么。
第二个问题,是第二个矩阵 (Msg[][]) 在某些行的中间有奇怪的“0”序列,我怀疑这个“0”出现在这个线程开始读取 RxTh 矩阵的新行。这有意义吗?
当我使用互斥锁时,我可以一次只锁定一行吗?
如果有人可以帮助我,我将不胜感激!
如果您需要更多信息或一段代码,尽管问我!
谢谢
【问题讨论】:
标签: multithreading multidimensional-array serial-port mutex critical-section