问题一:
说生产消费者模式是状态机,确切来说是生产和消费“产品”的过程是个状态机。
比如你生产一个橘子,它从1个“种子”到“橘子”,再从“橘子”被“吃掉”,前句引号就是一系列状态。每个状态都伴随一些属性以及一些可操作性,比如“种子”是不可“吃”的但是可以“种”,橘子可以“吃”但不能再种,“吃掉”之后就不能“再吃”也不能“再种”等等。而单一的变量则无法表示这些状态,而且会产生1个橘子“被双吃”的问题等等。如果你使用1个结构体作为变量,同时也包含了这些状态,但是这依旧无法解决“多生产者”和“多消费者”的情况,即1个橘子被生产后,就必须立即被消费,否则无法继续生产,而生产消费者模式中使用队列解决了该问题。
问题二:
你说的“控制循环启停”一般指的就是控制任务(或进程或线程)的启停。
控制启动:根据系统和平台的不同,使用其提供的API,比如startTask、fork、pthread_create等等。
控制停止:使用如下格式的任务循环,通过设置停止条件来break循环
while {
if(停止条件) {
break
}
...
}
希望对你有所帮助。
问题一:
说生产消费者模式是状态机,确切来说是生产和消费“产品”的过程是个状态机。
比如你生产一个橘子,它从1个“种子”到“橘子”,再从“橘子”被“吃掉”,前句引号就是一系列状态。每个状态都伴随一些属性以及一些可操作性,比如“种子”是不可“吃”的但是可以“种”,橘子可以“吃”但不能再种,“吃掉”之后就不能“再吃”也不能“再种”等等。而单一的变量则无法表示这些状态,而且会产生1个橘子“被双吃”的问题等等。如果你使用1个结构体作为变量,同时也包含了这些状态,但是这依旧无法解决“多生产者”和“多消费者”的情况,即1个橘子被生产后,就必须立即被消费,否则无法继续生产,而生产消费者模式中使用队列解决了该问题。
问题二:
你说的“控制循环启停”一般指的就是控制任务(或进程或线程)的启停。
控制启动:根据系统和平台的不同,使用其提供的API,比如startTask、fork、pthread_create等等。
控制停止:使用如下格式的任务循环,通过设置停止条件来break循环
while {
if(停止条件) {
break
}
...
}
希望对你有所帮助。
举报