From owner-FreeBSD-users-jp@jp.freebsd.org  Tue Oct 16 20:47:49 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id UAA17566;
	Tue, 16 Oct 2001 20:47:49 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from sv01.geocities.co.jp (sv01.geocities.co.jp [210.153.89.155])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id UAA17559
	for <FreeBSD-users-jp@jp.freebsd.org>; Tue, 16 Oct 2001 20:47:48 +0900 (JST)
	(envelope-from kkkon@geocities.co.jp)
Received: from mail.geocities.co.jp (mail.geocities.co.jp [210.153.89.137]) by sv01.geocities.co.jp (8.9.3+3.2W/3.7W) with ESMTP id UAA06077 for <FreeBSD-users-jp@jp.freebsd.org>; Tue, 16 Oct 2001 20:47:48 +0900 (JST)
Received: from kon (h015.p226.iij4u.or.jp [210.130.226.15]) by mail.geocities.co.jp (1.3G-GeocitiesJ-3.3) with SMTP id UAA02287 for <FreeBSD-users-jp@jp.freebsd.org>; Tue, 16 Oct 2001 20:47:47 +0900 (JST)
Message-ID: <00bf01c15638$8f0ac6d0$020aa8c0@kon>
From: "KK.Kon" <kkkon@geocities.co.jp>
To: <FreeBSD-users-jp@jp.freebsd.org>
References: <200110150801.RAA11023@oberon.gaia.jaeri.go.jp> <20011015211248.AAC7.S031036@sys.wakayama-u.ac.jp>
Date: Tue, 16 Oct 2001 20:48:07 +0900
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4807.1700
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: FreeBSD-users-jp 64868
Subject: [FreeBSD-users-jp 64868] Re: pthread
 =?ISO-2022-JP?B?GyRCJSolVyU3JWclcyRyJEQkMSRrJEglUCU5JSgbKEI=?=
 =?ISO-2022-JP?B?GyRCJWkhPBsoQg==?=
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: kkkon@geocities.co.jp


$B!!(BKK.Kon $B$G$9!#(B


> pthread$B$G:n@.$7$?%9%l%C%I$G(BC++$BNc30=hM}$rAH$_9~$`$H!"%9%l%C%I=*N;;~$K(B
SIGSEGV
> $B%7%0%J%k$,H/@8$7$F$7$^$&$N$G$9!#$3$l$O!"2r7h$G$-$J$$$N$G$7$g$&$+!)(B


$B!!$=$l$O$I$3$+$G%a%b%j$r2u$7$F$$$k$+$b$7$l$^$;$s!#(B
$B!!$&$A$G$OF0$$$F$$$k$h$&$G$9$,!)(B

gcc -pthread -g pthtrycatch.cpp -o pthtrycatch

------------------------------------------
#include <stdio.h>
#include <pthread.h>

void *threadTryCatch(void *arg)
{
 int  buf[1024*256];

 printf( "Start Thread\n" );
 int i = 0;
 try {
  for( i = 1; i < 10000; i++) {
   printf( " %d", i);
   if ( (i % 100) == 0 ) {
    throw 1;
   }
  }
 }
 catch (int d) {
  printf( "Catch the throw\n" );
 }
 return NULL;
}

int main(void)
{
 int  iErrNo = 0;
 void *value = NULL;
 unsigned int uiStackSize = 0;
 pthread_t pth_id = 0;
 pthread_attr_t attr = NULL;  /*pthread_attr_default;*/

 printf( "Hello,world.\n");

 iErrNo = pthread_attr_init(&attr);
 if (iErrNo != 0) {
  printf( "pthread_attr_init: Error = %d\n", iErrNo );
 } else {
  printf( "pthread_attr_init: Success\n" );
 }

 iErrNo = pthread_attr_getstacksize(&attr, &uiStackSize );
 if (iErrNo != 0) {
  printf( "pthread_attr_getstacksize: Error = %d\n", iErrNo );
 } else {
  printf( "pthread_attr_getstacksize: Success\n" );
 }
 printf( "Default Stack Size = %d\n", uiStackSize );
 uiStackSize = 2 * 1024 * 1024;
 iErrNo = pthread_attr_setstacksize(&attr, uiStackSize );
 if (iErrNo != 0) {
  printf( "pthread_attr_setstacksize: Error = %d\n", iErrNo );
 } else {
  printf( "pthread_attr_setstacksize: Success\n" );
 }
 iErrNo = pthread_attr_getstacksize(&attr, &uiStackSize );
 if (iErrNo != 0) {
  printf( "pthread_attr_getstacksize: Error = %d\n", iErrNo );
 } else {
  printf( "pthread_attr_getstacksize: Success\n" );
 }
 printf( "New Stack Size = %d\n", uiStackSize );

 iErrNo = pthread_create(&pth_id, &attr, threadTryCatch, value);
 if (iErrNo != 0) {
  printf( "pthread_create: Error = %d\n", iErrNo );
 } else {
  printf( "pthread_create: Success\n" );
 }

 iErrNo = pthread_attr_destroy(&attr);
 if (iErrNo != 0) {
  printf( "pthread_attr_destroy: Error = %d\n", iErrNo );
 } else {
  printf( "pthread_attr_destroy: Success\n" );
 }

 if (pth_id != 0) {
  iErrNo = pthread_join( pth_id, &value);
  if (iErrNo != 0) {
   printf( "pthread_join: Error = %d\n", iErrNo );
  } else {
   printf( "pthread_join: Success\n" );
  }
 }
}

+========+=========+=========+=========+=========+=========+=========+=====
 KK.Kon
 PGP Key fingerprint =  1D08 6D88 6BCD 3D80 3484 6EC8 1057 7024 FF8A 8674
 If you have any E-mail to me...
  kkkon@mizar.freemail.ne.jp
 My WebPage
  http://isweb8.infoseek.co.jp/computer/kkon/


