labview中的并行
第一种方式:
执行循环1,wait 1ms,然后循环2,wait 1ms,然后循环1,wait 1ms,如此往复.
第二种方式
执行循环1,几乎与此同时,执行循环2.大约wait 1ms之后.循环1,2再几乎同时执行,如此往复.
不可预测吧
编程最好不要依赖并行线程的执行次序
非要依赖的话用顺序结构好了
我想要类似并行的结构.
循环1,2同时开始,同时结束.循环1循环频率是1kHz,循环2循环频率1Hz.
不如放到同一循环里?
有个timed loop看看能不能用?
没怎么用过这个东西
应该是没可能同时开始的
从微观来说肯定是顺序的,而且顺序不可测; 除非用双核的有可能
This is the right way to go. Synchronize two timed loops would give you quite accurate timing.
timed loop如何实现同步呢?
我一直以为在两个循环之间随便扯上一根线是同步的不二法门……
线程同步也可以用信号量来实现,labview里面的semi**就是
了解一点TROS的知识就知道了
不了解!你讲!
线程A和B,B要和A同步,A里面来个信号量Semi,先赋1,B发现Semi为1就等待,A把需要同步的数据赋值完了,就给Semi赋0,B发现Semi为0就继续运行下去。简单说就是这样,不过RTOS里面更复杂
我还纳闷TROS是啥呢……呵呵
手误。。。
阿,这还不如牵根线来的简单
呵呵,你看看要同步的线程多了或者同步的地方多了的话,那个方便吧
这个只是叫做 “解决了race condition”,跟同步运行 …… 不一样吧
上core duo 2
那同步运行还有啥要求呢?除了要解决对资源使用以及运行步骤的问题,还有啥需要呢?
都用semaphore了,两个任务分明就是异步进行的,一定要说应该是实现了real time,跟同步异步没啥关系
所谓线程同步就是这样啊,无关的部分随便异步就好了,等到需要的地方大家互相等一下,然后再出发。只要在规定的时间里完成了规定的操作,也就可以认为是同步了,本来在顺序执行的CPU上就没有同步这个概念。。。。
双cpu
你还得问问OS他们是不是同步的
windows下?啥也不说了
It is quite straightforward to synchronize two timed loops using LV's built-in functions. Please see the example. If you search this topic at www.ni.com, I believe you can find more useful information.
Best,
建议看一下Gray的书,里面详细讨论过