我的代码为什么不行?
) j+ f) w6 V+ O( L* I
出现错误:
# b3 {4 C V/ `* s1 x& b: I. NAbort : A memory image file is created as "core"
# f6 w2 \; L9 q+ i* W/ F( l
0 v+ E' x+ g4 y
#include"pthread.h"
0 k1 q/ |. c8 B. Q6 X#include"stdio.h"
3 D b9 M9 Z, ~8 l: j( a2 v
#include"stdlib.h"
0 }' l* d/ T2 L2 ~. x* _' B# ]/ v% Kpthread_mutex_t mutex;
4 L( |( j4 {2 |' r. jvoid *function();
5 |! [! h, ^( U3 o5 o. A
double balance=500.0;
7 V, m; ?4 Q* k5 I. ]/ Y8 {0 jint main()
: G4 t, _0 l, a5 @4 V$ ~6 n{
8 a0 S8 D* v4 U- U: g
int i,num_threads=2,a[2];
" p: H& S: t. s4 W$ E+ [( g. H
pthread_t p_threads[2];
( k4 d+ g6 S8 C+ R$ ipthread_attr_t attr;
& [4 @: [7 B' W# E0 M1 }# g+ A
pthread_init();
. q2 [! j% g9 q; e6 ~0 V8 B: apthread_mutex_init(&mutex,NULL);
1 k6 U: }# k1 l
pthread_attr_init(&attr);
* L t5 s4 y5 Dpthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM);
% f) p8 I3 P: A) j2 W9 B* y+ I" y5 \/ F
for(i=0;i<num_threads;i++)
+ x0 L( T' t2 B: b( H Pif(pthread_create(&p_threads
,NULL,function,NULL)!=0)' w$ ^& Y: X! z1 E) H3 r6 x
perror("
thread_create fails");
1 T5 P- s( b7 B, d
! M8 g7 K M) G i# \) U
, w9 ] h7 }4 p. ?( i1 rfor(i=0;i<num_threads;i++)
S7 i0 B* U& u8 [8 i; V6 G1 g: @+ q{if ( pthread_join (p_threads, NULL ) )3 l6 ^* V5 {5 S
perror("error joining thread.");
1 L; h$ |4 d5 q! \, W3 V% Habort();
" I! p g& p; ?' Z}) c2 }, _& e5 M0 G" V @9 a
exit(0);. y) F3 ~+ |* H9 j
}: ^9 D5 F4 R9 `/ G/ p& U
* j. j- M) a) ]' O5 L4 U# K+ ]
void *function()* M8 p4 L' J6 O8 z* C2 H
{
$ R5 ^9 S: K# I2 j: m k( ichar c;& a2 o F4 Y( @# }, f% t ~
double amount1,amount2;
, W @) F' O4 V2 |4 spthread_mutex_lock(&mutex);, H: c% \1 o" W2 H* W
printf("choose your service:\n");. H a. V% t: B! m- u6 } d+ s
printf(" enter 1 deposit :\n");
3 T6 z( o8 _1 V& ~& Mprintf(" enter 2 withdraw: \n");" K* _# L: b/ W
scanf("%c",&c);' `& J/ ^% [3 Q/ f1 Q
switch(c)
9 h0 J7 ]6 `1 |7 n{
1 J" ~: ?+ F+ m7 L; ccase '1':7 @9 y9 H$ N. C1 i
printf(" enter the amount deposit:\n");6 y2 ~3 |* x" P: L) y
scanf("%lf",&amount1);
% o7 J/ M- a9 M3 Zif(amount1<0)% [, v) \- I5 i* {' P( R
printf("error:deposit amount is invalidate");
& H2 y |; E: ^1 e8 ?else{$ I. ^+ H, V; u; l) M$ e
balance=balance+amount1;
) B9 j. f0 I8 G1 u# E" X}) A1 G( Q# j6 A( c ~( l
printf("Available: %lf\n",balance);* d# H- ~' g" \' T/ R7 ]/ G4 Q
break;
- D2 m$ X) q: S8 Z% l9 Bcase '2':
/ d, R" f; [, rprintf("enter the amount withdraw:\n");" ]0 c+ x) Z6 l' c4 s+ }: \
scanf("%lf",&amount2);
& H2 t9 n7 k" l e9 uif(amount2<0), V4 l6 Y* ^* U/ X) B# p" S' \
printf("error: withdraw amount is invalidate");; I9 [0 w9 H$ P2 Q- I9 r( E
else{: p3 j; v; \& b: ~# R
if(amount2>balance){) Z# W$ }6 j% ~5 @' C: a
printf("error:insufficient funds");5 t1 E& u7 r! C) e* j( R3 l
}; J4 b6 d" K, s7 [2 T9 H
else{) H: H# Y/ @3 I
balance=balance-amount2;3 g6 m5 `+ o. s* D
}
$ T; I1 c4 v, X! z! n* {4 O z8 K7 s' J ~
}5 {8 N: c# P; P4 E
printf("Available: %lf\n",balance);
( `0 N, X0 ~; q/ }}; J/ f' C6 | q2 t0 a
pthread_mutex_unlock(&mutex);
6 A+ T0 h* d" v3 c7 [1 ~return;
* S, f. I0 M4 v" [5 P9 \1 @# q) d+ w}