1310有没有线程能够锁定线程的命令,,就是我在解除锁定之前,一直处于当前线程,不会进入其他线程呀。
Viki Shi:
可以了解一下原子操作
liu shr:
回复 Viki Shi:
就是1310没有现成的函数或者其他来实现是么?
还有先问下,我在A线程中释放了B线程(优先级高于A)阻塞信号,有时候会进不到B线程中,这有可能是什么原因呢。
感谢。
Viki Shi:
回复 liu shr:
是不是被其他线程抢占了?
liu shr:
回复 Viki Shi:
现象是这样的,B线程中如果要执行的语句简单就没有问题,每次都能进,如果B线程中调用了比如SPI或者UART接收,其他部分都不改变,就有时候进去不。。。我也比较纳闷
Viki Shi:
回复 liu shr:
你程序里应该不止这两个线程吧?要考虑其他线程可能是在就绪状态,虽然释放了阻塞信号,但并不一定就能立即得到CPU
liu shr:
回复 Viki Shi:
现在的现象是A在继续运行,反而B有时候进不去。B的优先级是高于A的,而且是高于我程序中其他线程的,也可能 出现这种现象?那么B线程中如果语句简单每次都能进这是什么原因。
灰小子:
回复 liu shr:
看看B中使用的资源是不是被A或者其他线程占用了?
Viki Shi:
回复 liu shr:
这么描述的话,我觉得B线程进去了,只是你观察的位置可能不对。进入B线程就立即打印信息或者在最开头设置断点观察是否有进入
YiKai Chen:
試試用critical section
liu shr:
回复 灰小子:
B中会判断A中的几个变量,但B中资源应该没有被占用。现在发现B中的SPI传输如果使用BLOCK模式就会有部分进不去,如果使用CALLBACK模式B线程就都能进去。。。