0

taskVarAdd()APIを使用してタスクにグローバル構造体を追加しました。

ただし、一部のシナリオでは、taskVarAdd()APIを使用して、同じグローバル構造体が同じタスクに再度追加されます。[つまり、taskVarAdd()が同じ変数のタスクから2回呼び出されます]。

この構造体は、そのタスクのtaskID、メッセージキューIDを維持します。

私の質問:

  1. タスク内で同じ変数に対してtaskVarAdd()を2回呼び出すと、動作はどうなりますか?
  2. 最初に追加された構造体変数が2番目の変数によって上書きされるかどうか?{これは上書きされると思います]
4

1 に答える 1

0

最も簡単な方法は、単純なテスト ケースを実行することです。

int v1;
void tvl()
{
   v1 = 1;
   taskVarAdd(0, &v1);
   v1 = 2;
   taskVarAdd(0, &v1);
   v1 = 3;
   taskDelay(1);
   printf("Initial v1 = %d\n", v1);
   for(;;)
   {
     v1++;
     taskDelay(60);
     printf("v1 = %d\n", v1);
} }

テスト コードを実行すると、v1 の次の値が得られます。

Initial v1 = 2
1 3 3 2 4 4 3 5 5 4...

単一の taskVarAdd を使用した同じコードでは、1 2 3 4 ... という期待される結果が得られます。

PS: あなたは VxWorks のバージョンを指定しなかったので、私が言ったことは Vxworks 6.x に有効です。

于 2009-06-24T04:28:34.903 に答える