[Armadillo:05899] A440で複数スレッドプログラムを実行するとリセットする。
email@hidden
2010年 10月 8日 (金) 12:48:34 JST
こんにちは、お世話になります。ichiと申します。
Armadillo440で複数スレッドを持つプログラムを実行すると
再起動してしまいます。
再起動するタイミングは、バラバラで数10分後のときもあれば
20時間後のときもあります。
再起動時は、リセットがかかったような状況です。
(いきなりhermitが起動する。)
以下に環境とテストプログラムのソースを記載します。
みなさまのアドバイスを頂きたくお願いします。
■機器構成
Armadillo440
ブートローダ 2.0.3
カーネル linux-a400-1.03.bin.gz
ユーザランド romfs-a440-1.02.img.gz
周辺機器接続無し
■プログラム
メインから20個のスレッドを作成する。その後1秒スリープの
単純ループ
スレッドは、20msecのスリープを行なうだけの単純ループ
(コンパイル時、-lpthread 追加)
■原因は?
スレッド利用方法(プログラム)が悪い?
20msecのスリープだけのスレッド20個も実行するのが過酷?
外的要因?
-- ソース ここから ---------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
pthread_t ThreadTable[20];
static void *ThreadFunction(void *argp);
int main(int argc, char *argv[])
{
int rc,tno;
printf("Thread test program. ver 0.02\n");
for (tno = 0; tno < 20; tno++) {
rc = pthread_create(&ThreadTable[tno],NULL,
ThreadFunction,NULL);
printf("THREAD(%d): pthread_create rc=%d\n",tno,rc);
}
for (;;) {
sleep(1);
}
exit(0);
}
static void *ThreadFunction(void *argp)
{
for (;;) {
usleep(20000);
}
}
-- ここまで ---------------------------------------------------------
以上、よろしくお願いします。
armadillo メーリングリストの案内