[Armadillo:05765] Re: Armadillo-300 Pthread について
Yasushi SHOJI
email@hidden
2010年 9月 2日 (木) 21:02:01 JST
At Thu, 2 Sep 2010 19:17:56 +0900 (JST),
K++ wrote:
>
> ■問題:
> mainを含む5このスレッドなのにpsでは6個になっている.な
> ぜでしょうか?
http://pauillac.inria.fr/~xleroy/linuxthreads/faq.html#D.5
NPTLではなく、LinuxThreadだからです。
どの 実装が使われているかは、↓でわかります。
#include <unistd.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
char buf[1024];
size_t s;
s = confstr(_CS_GNU_LIBPTHREAD_VERSION, buf, 1024);
buf[s] = '\0';
printf("%s\n", buf);
return 0;
}
> ■問題:プログラムの終了
> やりたいこと:
> [1101-1106]のどれかをkillしてもプログラムが終了する.と
> にかく一回のkillで全部終了できるようにしたい.
普通は、全部死ぬはずです。
http://pauillac.inria.fr/~xleroy/linuxthreads/faq.html#J.2
ただし、uninterruptible sleepの threadがあるなら kill しても死にません。
http://en.wikipedia.org/wiki/Sleep_%28operating_system%29#Uninterruptible_sleep
uninterruptible stateのプロセス/スレッドは、psで見ると「D」という
ステートになっているので見分けることができます。
> 現状:
> [1101-1106]のどれかkill -SIGINTしても,反応しないあるい
> は2個のスレッドが減り,4個が残る.残りの4個にkillしても
> 無反応
>
> Armadillo上ではなく通常のPCではこのような問題が起きませ
> んでした.
ATDEv2や最近の PC Linuxで使われる Pthreadの実装は、NPTLです。
NPTLは LinuxThread のだめなところを直すために実装されました。
古い実装の LinuxThreadとは挙動が異なります。
--
yashi
armadillo メーリングリストの案内