我正在面对一个问题作为练习,这是使用两个线程的经典生产者 - 消费者的一个小变体。一个线程是生产者( P ),另一个是消费者( C )。
我必须处理一个大文件,但我只能一次读取它,比如128个字节。该文件包含由数字分隔的字符串,格式如下。
[01]这是一个字符串[02]因为在这里它会启动另一个字符串或子字符串,如果你希望[02]这仍然是第一个字符串[01]
P从文件读取,并将数据发送到C.如果C完成,则P将新数据写回文件。问题是该数据的详细说明可能不完全在128字节数组内。
假设C线程需要将子串从[02]
移到[02]
。但是数据数组从第一个[01]
填充到子字符串的中间。我无法检查第二个[02]
,因为生产者将在连续调用中读取它。
我需要一种方法来连接2对或更多对128字节读取。 (同步不是问题,我当然可以使用关键部分和事件来处理它。)
我的想法是使用一个布尔值来跟踪我是否在当前数据中删除了某些内容。但这不是一个好方法,因为[02]
可能包含需要删除的另一个子串[03]
。括号[
也可能在数组[127],所以我不知道下一个读数组是否为[0-1] == 02
。
我该如何处理?