区别: 信号和信号量是不同的,他们虽然都可用来实现同步和互斥,但前者是使用信号处理器来进行的,后者是使用P,V操作来实现的。 参考资料
1.信号:(signal)是一种处理异步事件的方式。信号时比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程外,还可以发送信号给进程本身。linux除了支持unix早期的信号语义函数,还支持语义符合posix.1标准的信号函数sigaction。
2.信号量:(Semaphore)进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。 通过STM32的simulaiton,我发现他的执行顺序是这样的:首先进入main函数,一系列初始化后,完成osKernelStart (); 后,马上进入led_Thread2,执行到osSemaphoreRelease(sem1);,转到led_Thread1,LED_On(1); osDelay(500);还没开始delay就又转到led_Thread2。恰好线程2又是delay,程序中没什么可执行,索性线程1和线程2就delay了500ms,然后又回到线程1执行led关,等待semaphore。
/*----------------------------------------------------------------------------

STM32-RTX系统中,信号与信号量是两种不同的同步和互斥手段。信号是处理异步事件的复杂通信方式,常用于进程通知;而信号量则通过P,V操作确保线程对公共资源的正确访问。在实际应用中,通过STM32的仿真观察,发现信号量控制的线程执行顺序会影响到任务的并发与同步行为。"
108742194,9063218,C++:宏与内联函数详解,"['C++编程', '编译优化', '函数', '预处理']
最低0.47元/天 解锁文章
1341

被折叠的 条评论
为什么被折叠?



