2

pthread について質問があります。malloc を使用してスレッド内に変数を作成し、そのポインターを共有構造体 (つまり fifo) に渡す場合、thread-1 によって渡されたポインターは thread2 によってアクセスされますか?

上記の質問のためにコーディングする必要があることに注意してください。スレッドをよりよく理解しようとしているだけです。以下は私が考えていることです。環境はpthreadc、およびlinuxです

私の知る限り、スレッドは親プロセスのメモリを共有しています。その場合は、以下が正しいはずです。

void *thread-1(void *pointer)
{
  int *intp = malloc(4);
  send_to_fifo(intp);
}


void *thread-2(void *pointer)
{
  int *iptr;
  iptr = read_from_fifo();
  do_something(iptr);
  free(iptr);
}
4

2 に答える 2

6

スレッド 1 によって渡されたポインタは、スレッド 2 によってアクセスされますか?

はい: すべてのスレッドが共通のメモリ空間で動作するため、これは許可されます。

mallocfree、およびその他のメモリ管理関数は、 でコンパイルされていない限り、デフォルトでスレッドセーフですNO_THREADS

于 2012-11-24T00:12:44.140 に答える