[C]関数ポインタの配列
やりたいこと
掲題の通りだが、関数ポインタの配列を定義したい。
具体的にどう使うかというと、例えばpthread_createの第3引数は新規スレッドで実行したい関数のポインタを渡す。複数の関数に対してそれぞれ新規スレッドを割り当てる場合、それらのポインタを配列にしてまとめて処理したい。
やり方
下記のようにすればよい
void *(*funcs[])(void *)
意味は以下の通り
(*funcs): 関数ポインタ
(*funcs)(void *): voidポインタを引数とする関数へのポインタ
void *(*funcs): void *を返す関数へのポインタ
このように使う
void *(*services[])(void *) = {Service_1, Service_2, Service_3};
for (i = 0; i< NUM_THREADS; i++){
pthread_create(&threads[0], sched_attr, services[i], (void *)threadParams);
}
void *Service_1(void *threadp){
...
}
最新記事
すべて表示やりたいこと 2次元配列に作用する処理がある 処理の対象となる配列が複数ある このような場合、この処理は関数化したいが、引数をどう定義するのかちょっと迷った やり方 配列サイズは固定とすれば、以下のようにすればよい // Define a typedef for the...
概要 前回、コンパイルとリンクについて説明しました。 今回は、それを元にコンパイルエラーとリンクエラーについて説明します。 コンパイルエラー コンパイルで行われるのは 1 コードのバイナリ化 2 あるものリスト、欲しいものリストの作成...
Comments