検索
[C]関数ポインタの配列
- M.R 
- 2024年7月27日
- 読了時間: 1分
やりたいこと
掲題の通りだが、関数ポインタの配列を定義したい。
具体的にどう使うかというと、例えば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){
 ...
}![[C]動的リンクとは](https://static.wixstatic.com/media/90b712_18dcd348ceaf4fea8585e60a08091a5f~mv2.png/v1/fill/w_980,h_538,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/90b712_18dcd348ceaf4fea8585e60a08091a5f~mv2.png)






コメント