0
VxWorks 6.9でバイナリセマフォを使用して2つのタスクをどのように同期できますか?私はそれをどのように行うことができますVxWorksでセマフォを使用して2つのタスクを同期させる方法は?
Z Z ....
A、BのBのCのC:
私は、出力は次のようになりたいですか?
あなたが持っているために、SEM_FULLオプションを使用してT1を作成する必要があります
#include <taskLib.h> #include <stdio.h> #include <kernelLib.h> #include <semLib.h> SEM_ID t1,t2; int task(void) { char i; for(i='a';i<='z';i++) { // semTake(t1,WAIT_FOREVER); // semTake(t2,WAIT_FOREVER); printf("%c ",i); // semGive(t2); } } int task2(void) { char i; for(i='A';i<='Z';i++) { // semTake(t2,WAIT_FOREVER); // semTake(t1,WAIT_FOREVER); printf("%c ",i); // semGive(t1); } } void Main(void) { int id1,id2; t1= semBCreate(SEM_Q_PRIORITY, SEM_EMPTY); t2 = semBCreate(SEM_Q_PRIORITY, SEM_EMPTY); id1=taskSpawn("First",120,0,1000,(FUNCPTR) task, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0); id2=taskSpawn("Second",120,0,1000,(FUNCPTR) task2, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0); }
バリアセマフォが必要です。このセマフォは、指定されたポイントで各スレッドを同期させます。この場合、それはforループの終わりです。 – Nishant
あなたは@Nishantを手に入れませんでした。私のコードを編集することができます..? –
以上は何とかコメントしています。なぜこれは動作しないのですか?何らかの理由で@Nishant –