我的代码为什么不行?
4 W5 J! l3 J" ?7 n3 R) ]出现错误:
+ G' _! C- ~2 Z( u2 n7 z$ B4 E( p! \
Abort : A memory image file is created as "core"
" E7 S( {6 z1 X" ]$ |. v
" ~# e$ x$ q6 h# z4 q
#include"pthread.h"
* n% F& U: W: t4 t
#include"stdio.h"
9 G, c4 Z: l( e: q" u* C
#include"stdlib.h"
1 q* y, M, d! d( {7 [3 `* K
pthread_mutex_t mutex;
/ M9 l+ H' N5 C! u" R; j
void *function();
' A5 G' g! E# G
double balance=500.0;
1 X9 g( b: s% D+ o) @int main()
* K0 f9 X& b4 N7 _ H
{
% {& ~# C( k$ c) [4 }% T
int i,num_threads=2,a[2];
# _6 R6 {8 n% r6 tpthread_t p_threads[2];
+ f3 s2 ]/ f7 Ipthread_attr_t attr;
7 Y. T$ ~4 R$ \8 `pthread_init();
6 s0 p3 i' r5 O0 _pthread_mutex_init(&mutex,NULL);
* E9 E2 d4 @# {* Spthread_attr_init(&attr);
. }3 M) o+ y! g! X; ]
pthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM);
$ m1 @* Z9 s# Ifor(i=0;i<num_threads;i++)
9 E+ J( V# c3 Q P3 z+ S
if(pthread_create(&p_threads
,NULL,function,NULL)!=0); P( e( z L0 ?
perror("
thread_create fails");8 n$ y U8 x7 o
# S" p7 R9 {1 @6 m/ @( ~9 l- v; s
4 A% p3 o! o z- rfor(i=0;i<num_threads;i++)
9 d" Y$ Q) [. R8 ~{if ( pthread_join (p_threads, NULL ) )
+ g2 U( `: g+ e: o( e perror("error joining thread.");
5 z* [# Y* J3 I, C) tabort();
4 g% E% o. N" [- U/ h9 h0 H; t}$ {0 ^; {' k/ Q( A4 M& o
exit(0);
- c' o# y1 F3 o7 O}# ~- V, B6 w) p6 Z* ]9 H4 a
* a/ i2 Q5 s9 ^1 P0 H0 F
void *function()
) o* N9 n3 v7 G/ T" I{
6 b0 ~- F+ Y4 W8 b; x. h0 d6 T nchar c;( ^$ A: m' _; m, w3 v( O8 d
double amount1,amount2;
6 R- T0 c5 Y Y6 mpthread_mutex_lock(&mutex);
! }2 M' G/ V" @9 i2 Lprintf("choose your service:\n");% j* P, J0 W9 S
printf(" enter 1 deposit :\n");6 g2 @* b1 G; U* n f
printf(" enter 2 withdraw: \n");: z. o3 _" f; c0 ~1 p" Z( Q
scanf("%c",&c);
+ k1 m5 i2 r9 I k* Zswitch(c)
# Y: J$ } q1 { \! P{ N# c* m- a- g7 G2 u
case '1':4 s+ K. ]8 [7 r! ]5 b- s. ?5 [( h5 I. Q
printf(" enter the amount deposit:\n");
( k L) g0 C6 Xscanf("%lf",&amount1);
: g9 `" m( ~5 g& i+ j' I3 \if(amount1<0)
T( t2 N( }0 A) S. o7 z d$ A/ sprintf("error:deposit amount is invalidate");4 ], H8 D$ H ~; \9 S- O- A: _, @ r6 F
else{6 G/ W+ C8 j" T; {6 A! |
balance=balance+amount1;6 Z& I6 d" q6 ?9 W' g5 H' \# Q
}
* B3 h5 @! y/ A& H! L* N' }' o6 nprintf("Available: %lf\n",balance);
0 n5 _- R* ^. N3 U0 r6 Pbreak;
, E0 o0 y" r8 r- A! f$ A; ^case '2':' n6 w/ K- Q; y0 M, H5 M: ~
printf("enter the amount withdraw:\n");1 u% y1 H) N9 V( R" p
scanf("%lf",&amount2);" s' P: v; X; W; R5 ^
if(amount2<0)* N2 f- B7 q" P
printf("error: withdraw amount is invalidate");9 D ]2 r8 L) h; w
else{8 P# h$ ~; A+ R v
if(amount2>balance){5 D- ?# n6 i" X4 A( p# @
printf("error:insufficient funds");
) w; @8 T' L' }! U}) K& F$ y% n: F- Y1 Q: x5 w5 o
else{
2 L$ I8 N& j- T; |9 }6 S& ibalance=balance-amount2;
9 W" Z, e# |7 @8 m$ T }' P$ L% O; @$ |. x0 {7 m
/ u/ M% \. g- S" F% W }
) M1 _7 o$ J4 R, U8 Eprintf("Available: %lf\n",balance);' Q! k3 q- h1 ~$ s3 F& Q
}0 _2 _2 D2 r+ j% s: C1 Y) }
pthread_mutex_unlock(&mutex);8 @. H, L* N8 m v
return;
. S4 R( {4 N2 o- Z}