我想用一个事件向多个线程发出信号,最好的方法是什么?例如:只要 1 秒过去,RTC 中断就会发生并设置其相关的事件标志,之后任何线程等待此事件,开始运行并完成其工作。
RTC interrupt:
tx_event_flags_set (&rtc_events, 1_SEC_PASS, TX_OR);
1st Thread:
tx_event_flags_get (&rtc_events, 1_SEC_PASS, TX_OR_CLEAR, &flag_val, TX_WAIT_FOREVER);
2nd Thread:
tx_event_flags_get (&rtc_events, 1_SEC_PASS, TX_OR_CLEAR, &flag_val, TX_WAIT_FOREVER);
如果我这样使用它,只会通知其中一个线程。我可以为同一个 RTC 事件使用多个事件标志,但是这次 RTC 将依赖于线程,这在松散耦合方面会很糟糕。
RTC interrupt:
tx_event_flags_set (&first_thread_events, 1_SEC_PASS, TX_OR);
tx_event_flags_set (&second_thread_events, 1_SEC_PASS, TX_OR);
1st Thread:
tx_event_flags_get (&first_thread_events, 1_SEC_PASS, TX_OR_CLEAR, &flag_val, TX_WAIT_FOREVER);
2nd Thread:
tx_event_flags_get (&second_thread_events, 1_SEC_PASS, TX_OR_CLEAR, &flag_val, TX_WAIT_FOREVER);
这些方法中哪种方法最好?就更好的软件设计而言,有没有第三种方法可以解决这个问题?还是我担心太多?
请给我一些建议。