在Contiki中寫入多個進程時,通常輪詢進程並等待其退出或繼續信號。但是,如果我需要等待特定流程結束並且有多個流程觸發事件,那麼我如何才能到達創建該事件的源流程?例如,在下面的代碼中,我想知道哪個進程剛剛退出,以便P3可以繼續前進。Contiki事件源
這是一個常見的情況:
PROCESS_THREAD(&P1,ev,data){
PROCESS_BEGIN();
//Do Something
PROCESS_END();//Posts an EXITED event
}
PROCESS_THREAD(&P2,ev,data){
PROCESS_BEGIN();
//Do Something
PROCESS_END();//Also posts an EXITED event
}
PROCESS_THREAD(&P3,ev,data){
PROCESS_BEGIN();
if(ev==PROCESS_EXITED_EVENT){
//Do Something only upon the exit of PROCESS 2
//However this if block works at the exit of either P1 or P2
}
PROCESS_END();
}
還有其他的方法,我可以做一個while
循環直到兩個process_is_running(&P1)
和process_is_running(&P2)
都是假的。但是對於Process進程的一個小增加的比較方法將更加優雅和可讀。
我無法從Contiki源代碼中得到任何提示。有沒有人嘗試過像我上面暗示的那種替代方案?