[Armadillo:05764] Armadillo-300 Pthread について
K++
email@hidden
2010年 9月 2日 (木) 19:17:56 JST
Armadillo-300ユーザK++と申します.
現在Pthreadを使って下記のような流れのプログラムを作成し
ていますが,正しく終了できません.ネット上の情報だとuClinux
が原因のようですが,解決策を見つけることができなかったの
で質問させていただきます.
原因・解決方法につきまして,心当たりがありましたらご教授
いただけますと幸いです.
よろしくお願いいたします.
----------プログラム----------------
void thread1()
{
pthread_detach(self ...);
while( blocking_read I/O ...){
...
}
}
/* client数は1only*/
void server1()
{
pthread_detach(self ...);
while(wait_client(...) ){
サービス1
...
}
}
/* client数は1only*/
void server1()
{
pthread_detach(self ...);
while(wait_client(...)){
サービス2
...
}
}
void threadSignal()
{
...
sigfillset( &sigset );
sigprocmask( SIG_BLOCK, &sigset, 0 );
pthread_sigmask( SIG_BLOCK, &sigset, NULL );
switch(sigset){
...
case SIGINT:
各サーバのsocketをclose
pthread_exit();
...
}
}
int main()
{
...
sigfillset( &sigset );
sigprocmask( SIG_BLOCK, &sigset, 0 );
pthread_create( thread1 ...);
pthread_detach( thread1 ...);
...
pthread_create( server1 ...);
pthread_detach( server1 ...);
...
pthread_create( server2 ...);
pthread_detach( server2 ...);
...
pthread_create( threadSignal ...);
pthread_join( threadSignal ...);
exit();
}
■問題:
mainを含む5このスレッドなのにpsでは6個になっている.な
ぜでしょうか?
# ps aux
...
1101 root 552 S ./program
1102 root 552 S ./program
1103 root 552 S ./program
1104 root 552 S ./program
1105 root 552 S ./program
1106 root 552 S ./program
...
■問題:プログラムの終了
やりたいこと:
[1101-1106]のどれかをkillしてもプログラムが終了する.と
にかく一回のkillで全部終了できるようにしたい.
現状:
[1101-1106]のどれかkill -SIGINTしても,反応しないあるい
は2個のスレッドが減り,4個が残る.残りの4個にkillしても
無反応
Armadillo上ではなく通常のPCではこのような問題が起きませ
んでした.
--------------------------------------
GyaO! - Anime, Dramas, Movies, and Music videos [FREE]
http://pr.mail.yahoo.co.jp/gyao/
armadillo メーリングリストの案内