RTOS: RTOSのためのpthread、その4
各スレッドに、引数を渡す場合についてのテスト
ここについては、https://kaworu.jpn.org/c/pthread_%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%AB%E5%80%A4%E3%82%92%E6%B8%A1%E3%81%99%E6%96%B9%E6%B3%95
のソースをそのままタイプしている。
スレッド1とスレッド2に整数の数を渡し、それぞれのスレッドは2倍にする仕事をするという単純なもの。スレッドに引数を渡す事は、RTOSを例えば想定すると、呼び出す周期なんかを引数に渡すようにしておくとかの使い使い道はたくさんあり。
あとこのソースでは、
__func__
という__func__には、現在いる関数名が文字列として格納される識別子を使っている。
/*This is a test for pthread.
* The argument pass
*/
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <string.h>
void *func1(void *p);
void *func2(void *p);
int
main()
{
pthread_t thread1, thread2;
// pthread_mutex_init(&mutex, NULL);
int arg1 = 123, arg2 = 456;
int ret1,ret2;
ret1 = pthread_create(&thread1, NULL, (void *)func1, & arg1);
ret2 = pthread_create(&thread2, NULL, (void *)func2, & arg2);
printf("execute pthread_join thread1\n");
ret1 = pthread_join(thread1,NULL);
printf("execute pthread_join thread2\n");
ret2 = pthread_join(thread2,NULL);
printf("arg1 = %d\n", arg1);
printf("arg2 = %d\n", arg2);
printf("done\n");
// pthread_mutex_destroy(&mutex);
return 0;
}
void *func1(void *p)
{
int *ip = (int *)p;
printf("%s: %d\n", __func__, *ip);
*ip *=2;
return 0;
}
void *func2(void *p)
{
int *ip = (int *)p;
printf("%s: %d\n", __func__, *ip);
*ip *=2;
return 0;
}
コメント
コメントを投稿