English 中文(简体)
使用多线索程序接收和组织串列信件( 在 C++ 中)
原标题:using multithread program to receive and organize a serial message (in C++)

我是新来的 编程多线条的东西, 所以我想知道 有没有人可以帮助我。

我必须制作一个程序 接收一个连续(和连续)无同步的信息, 然后读读它,组织这个信息。

I m trying to use a multithread tactic: the first thread is responsible to receive the serial info and write it in a matrix (RxTh[col][row]), one line at a time. Then, the 2nd thread is called, to read each line of the RxTh matrix and search for specific chars (that symbolizes the begin line msg). This thread also have to put this received messages in another matrix (Msg[col2][row2]) separating each line of the msg in a different row in the new matrix.

今后,我将不得不使用这个重新排列的线条, 寻找具体信息, 但我现在不认为这部分。

所以,我对这个程序有些问题:

  • 首先,当我停止写作以开始读取部分时,我失去了一些序列信息。 这就是为什么我试图使用哑音或关键部分。 但这行不通,我不知道原因。

  • 第二个问题是,第二个矩阵(Msg[ ])在某些行的中间有0的奇异序列,我怀疑这0出现,而这条线开始读取RxTH矩阵的新一行。这有什么意义吗?

  • 当我用哑巴时,我一次能锁一排吗?

如果有人能帮我 我会感激不尽的!

如果你需要更多的信息 或密码的一部分, 问我!

谢谢 谢谢

问题回答

您真正想要的是一个缓冲队列。 您的矩阵只是复制它, 但是混淆, 不包含元数据( 有关数据的数据) 。

(1) 1) 定义包含缓冲+关于缓冲中哪些内容的一些信息(如多少数据已写入该缓冲中)的类别或结构。 例如 :

class Buff
{
    char contents[1024]; //(this represents your row)
    int numWritten;
    ...
}

2) 创建由关键部分守卫的 FIFO 队列。

Thread1 创建了 < code> new 缓冲, 填充并获取关键部分, 在队列结尾处推动缓冲, 并释放关键部分 。

Thread2 acquires critical section, takes first buffer out of queue, releases critical section. After it s done with processing the buffer, deletes it.

您需要一些额外的同步, 所以线索2 可以在没有完整缓冲可以处理时等待。 如果填充缓冲的数量太高, 则线索1应该暂停, 以便给线索2 更多的时间 。

如果您觉得创建和删除缓冲文件可能不理想, 请设置一些缓冲管理器。 它会保留预定义的缓冲文件数( 列数 ) 。 线索1 将从该集合中取一个缓冲文件, 而不是 < code> new , 线索2 将会返回到缓冲文件库, 而不是 < code > delete

您可以很容易地锁定一个缓冲器, 如果您为每个缓冲器做单独的哑巴。 但是在只有一条线发送而一条线接收的情况下, 不必这样做 。





相关问题
Silverlight, Updating the UI during processing

I have a simple silverlight multifile upload application, and i want to provide the user with some feedback, right now its only in a test phase and i dont have the webservice. Somehow i cant get the ...

Is reading from an XmlDocument object thread safe?

I was wondering if i could safely read from an XmlDocument object using SelectNodes() and SelectSingleNode() from multiple threads with no problems. MSDN says that they are not guaranteed to be ...

Terminating a thread gracefully not using TerminateThread()

My application creates a thread and that runs in the background all the time. I can only terminate the thread manually, not from within the thread callback function. At the moment I am using ...

热门标签