这是不是就是什么多线程,能不能用C实现

[复制链接]
2919|5
 楼主| s99060 发表于 2007-2-1 21:59 | 显示全部楼层 |阅读模式
在一个函数中判断一个条件,若不满足,则跳出这个函数继续下个函数(下个函数也有如此要求),一个轮回,再次进入这个函数,这时要求直接进入刚才条件判断的地方(前面的部分不执行)......

其中的条件包括:外部信号,函数之间的信号以及时间延时等,函数有十几个.

这是不是就是什么多线程(还是什么进程,这个区别不明白了)

请问:是不是一定要用到汇编,还是操作系统什么的,我原来都是写汇编(51)的.
dengm 发表于 2007-2-2 08:22 | 显示全部楼层

把函数搞成状态机

将军令 发表于 2007-2-2 08:31 | 显示全部楼层

这是单线程!!老大

emailli 发表于 2007-2-2 08:31 | 显示全部楼层

和操作系统有点类似了

这种操作和操作系统的调度有点类似。但是又不是系统调度。

他可以用轮询模式(姑且这么命名)在一定程度上实现时间片的调度算法。

可以想象成所有的任务都是同一个等级的!

只是暂用的时间片大小不同。

你这里至少肯定暂用了一个定时器来做系统时间片。这种模式编程在不使用操作系统的时候是比较好的!

值得借鉴这种架构!

我们书上的程序一般都不会讨论这种架构的!值得你学习!
forthlab 发表于 2007-2-2 09:34 | 显示全部楼层

和状态机编程接近了,

和状态机编程接近了,建议整理一下思路,规范编程模式。
 楼主| s99060 发表于 2007-2-3 11:47 | 显示全部楼层

继续请教

一:用状态机必须有明确的状态,这对以后增减或修改不利.
二:因每个函数又是线性执行,由于每个函数执行时间远小于需等待的时间,所有函数循环一遍也不会影响每个函数的执行精度.
我在用汇编解决这个问题时没用状态机,也不用定时器来分时间片.只要条件不满足就直接跳出了,继续下个函数,这样编程时就像一直在等待条件满足一样,不用考虑和其他函数的配合.
汇编时这样处理很简单,占用的存储器也最少,而用C不知道编译时用了哪些寄存器(是不是这样?),所以要保存所有的寄存器:(

问题是直接用C好像也办不到吧...

另:请问,到底什么是线程和进程呢. 这里指的函数是C的叫法,也就是个过程,每个过程完成一个独立的任务(控制设备的其中一个部件的运行)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

224

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部