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