From 7118bcc0a81912f76ccae69410a9e5fdb7bbc313 Mon Sep 17 00:00:00 2001 From: Nikolaj Date: Wed, 27 Oct 2021 19:24:23 +0200 Subject: [PATCH] :smile: --- A2/fauxgrep-mt | Bin 0 -> 25800 bytes A2/fauxgrep-mt.c | 58 +++++++++++++++++++++++++++++++++++++++++++---- A2/job_queue.c | 11 +++++++-- A2/testfile | Bin 20536 -> 20536 bytes 4 files changed, 63 insertions(+), 6 deletions(-) create mode 100755 A2/fauxgrep-mt diff --git a/A2/fauxgrep-mt b/A2/fauxgrep-mt new file mode 100755 index 0000000000000000000000000000000000000000..9e6d72955f809b113dc024d7e4cdfc7855fc8805 GIT binary patch literal 25800 zcmeHvdwi7Do%eZW=1FEU$>c^L0fYeogP02xk*iLC;KXt(1}ol%WHL!cl9@OcgjR($ zYRMa7!FH9mOLuKQ?bfw+W$lfvmqzUh-M0Hud--55yVOcewB1s*F6~zHe!u53nHiGZ z{k-pf-hW;W%=0_H>-nAEInQ~{d7hKAuX*DJhh+(qoZ@OhY=60;1T^F1%{l`R5X(gg zuJgpDq5!x{(iA_S0JtihcH~00raJ+tSIx`>aHb*)1C57-)SE1oc@@V%QKoR}+01G@ zAAY__$r)()nezOKFY@34T|Wb}^%$GebxQB_np}8Z>y??xXun9N-iX#4(Rv1+qeDmr znt0L-f6H||^I-ryrhvQ(k*~K$>*d4sTHZjG!F2uERLB2Gd0VyKU4CgsTAz&9FOe?L zuSWdXr>@<+T{!lOVbYAgC9E9Wp>c@FMA<3$G3?ZT|Ctka{`uXh`2X5@*7d|=k=C~Mo`~X2 z$mvUUCn9Yfq26>VvM1CN5APC&6b2&|$)LB#qp=L4#M7}H1w~9H_DX7Jye|?Hp-?i_ z7Ty&Kckc>ywnckHGL`5^_ldqlG?wZVovCCf+!Iem#GP%47@7Dlsq{*8Dqe3}4@`>FH4q<=2D8WI=AF<`bV1jh1jE+NxC>I=jDDUO zx?j^z255Esxn%Iu*C;y2e*K7&gfm%m{pgnTkt{kK%%pQ!^r{S1i1S(WX<78@fI%N!Xc1FIFP*+MPxBWzqYx=%rcoJy~?~tR;JY7F|yvNfrmP=(@=z{ZJOY zQc~3ANEV&XNs}H8s2uAx)er$63n+y2YL%7OV*!PbUZb+|dOV;I(xgE)fwxO%{V~}8Yj<$aex*T(;QhlX$JnW0|F_&P$~cT&`6|d`^IyZYbanta;@#wp zo*6@${}bYTM2?=4_{+o{#D^vRkHq=t9z7=U7l`u_Ir^x?zd@Xj#?eC(e~LICiKF`^ z{y1?C)1!S7|15Dn0!MdB{8PmF=o{TC@rQ^P5f4cGe-P&*aI{h4_Y&u$Z`3dGj}Yfn zVYE!*3F3SNjtYt2PP~-(x%WYs-%gy5ywNifzlk^>b)%;wzKu8^aihZ$zm7N`ZKKB| zzLq#2X`_z>EN9J=yVf`#t~2hIhb|JQ4R&!2Y& zt(St|e?K(^2F~Jj0}Z&x&UBW}UO%o+|Msu>Ds)Bq1KWfBYhHk)2o9W0l>`UZJOKJw z)iIDp!iddF_CXM=TVL#~FP(iK-4HK!j_28bXm7L&vfE(;9WM|Zxcg*qAU)g>9CXdE zmA0GDFCGpKHV+4fsv>BZ;J}ZA11CndAzHzK=5xXRyU&UAd?_&S5(2SK%A7dP;zsUz zZ*1&1+ijF9tl){}Gb96!5T0oM8GGuRS3~v1EY9zU3{ zu>G0Bnm*igL(}%A*6Yy%-2>0wg?I%AzRLS6yZDo6h5=OY#eON_xTj8KT>tL+f!Pz2b&{YU~z&z1>hy-I}FyKZFA2n$Ia2e1e zswijagF{)Onc{Yh7x%`$%i^Nh`fv%s2%xNi=0p8=9}@d6&u6~?_qJT%-uGb4NDc<7 zbN%wuuQz9n^C$BAxd8ngvOlqi0XZ@945~WVd?*;kp!$Xt9N7LCvMmEYZu%zVgv|f2 z=~Jf6x3kNDcnm?}ED!oQ2~s2A@CUgj>f> zG#{jl?Aed9+%Ri0@WNp8!657wOS|Yk$AT6*{rAygA489QPTGa^m49TR1M`ZD;pC5!E$~%s`@VH2CM@28iSc^`W)y4-XgZsDi>w)&tuMhX1 zw^CR1pLeGmZ_Xn*I2b@rKQZ#WG{rl(>vEbnF>(^Ideb@tq2ok_Dr*>J4U6=b4EfuC zfcYVNiB>9t(uw8+vi7qfb8K+?fnfM$3@4{D)ms2d{mlnZy#uV?E9&+bz`~qwmo2 zVDtIG?e7efF>@jymx+VT@1T8TBc2!uQE1==vV#L#-7tQuHa=g~`9Y0NRp^*T3xUci zWrh;zF7$t{CDKa4r_oNLEJfaXCq@>W*Z7G59yzEUnpKN_k*p!RRij50dcQ`86#6v` z+-$LXfKKGdKpNwveM(D>D5XEs=qp5}GpI7)V8EqAVlfowf&&gs9@>hbxB2|QR+l7b zAXdDPDuwwww7oz4o3aNx=z8f{U_Go^|4i19eL|yg<;eNVl=s8nPVW6St#r9kdQmIQ z$as%o48vY6>|bW=tKyDm(Veu9QFCncFBxN1)uFAj^14pJ!3$z=DmcgvgD}W`gIb{! z*4NUdcvy-uhM}LFFX#e)`>y7gNMT4>@q$#oPm6q)B187?7pM?C3si?d%>($nZu;=X zp*3H;REVYPEzx)_0r5x5wE zixK$miU8m1GvTWSK7T|y{HeH~A1VCvlVW~y<@}D7%+@L9f0G|Q$ygfF?Z)m##{{;AXJfN557KAixBuMO7#7k(tS^+WvF9PX6hAlo z*$Fw}E8F0!zOK}Jr+dG+X8NkjKQM1Ds8aV9z!mVbm~u_NvIiXNN(!8X7K)JkyFi}* z*4S7tV21DLCR+`SmRj>7xt@XL( z_oYw5PBq#KYt@VCVgxQm;9>+WM&M!uE=J&D1TIG4VgxQm;J+aPX1|r$U&Sds6Zd#A z8Jv5%n2Ht1?2pDbHJOg+%`s;0jM>*UL-Vnek;&|#G5fo?9$_;4-@iW=CqB%z4w9Ms z%P+ma%^s*TnqMTPuwK#ragE4St$@hh!$p!-6C$7l)T$QyyR^Pp2No)}FnhhKJ&IuH zH)@BC-@{s7i)G5k*A-bGu%#%z#!1|*74eo=;>HgwGbR4AE(pt1iD&%Q<@~<}W?y-J zxy$5g7|T2jZ_uz)!`&J_py9(B{sI<}v0HkffAQk_#n?Z|m9}aH)iitc_Or+2_ZOo-4wZZrI-HW9 zqr1u;0${4!9VF3m zZ-Qrqj>7K|SOr@oW*>pxG?$HSsnD~(3};-g;Nm=7LsPCoNI4&>X=461h&n%^@-Ktn z{G^ik3QBQ4JYC9sne<0yNZl_`_ef2Gy3M#To&R%&%->D=qtj*nr?mOxB{Kgm>0g;C z^S>qi1ttFr`tuKSNO#UgS>7sKP=gyF?K?R!GEe#bM30QX;k1Mp|1Xkw)uA)WWq|BFn8M^;0Rm)AG>ThAF3jbX$K#v7q$2&zeI{i$qdZ zE#0}!`#e3Tvbnane*|m&*56{>bA71vERX}%6*RD; zWmO&kH*c5*WWWbDLw4Spy&x=iFE9KoR4W&vnk(Hh zYazR;n0-}SSD&eAz`|4TufaE3Jc@md0cEq0{F#IYgY|V>JTpsJ8)1DMRq)IyVKv>>0wN1bS+_E)hREfv32sTH{^>P;GslVpqF)6Z@@)XyBRx)~D9GiJX8$ zuCO|((_xb6Hc~_li`@Tq4j!E^dTpk&iQNDbzM!Z zPe=*x1Ca2n0jtbg;QlV7w-8)!q3m43S_CUzw?tglr%<%lQ%othaB>{EN{1!LtQC`yR&p>oS;&$>K#g(`2n? zt9`?>5fuJ3i=NxBLC9Mz4fc>FtG=-TXL3 zG8a6*fIA;z5ubu^@kv>oS19z)yo~Vj8(yvhTR2%qH`&hTnENGjZ{bo#U--axD5qY6 zQzc*YvD;50l_Q0)-$vcNK3R(;q{>>z_}OQn;Omy92Qvz@`1d1a^(8w=kyWCda$)mN z3rh}4>5m#|UB(|E;hiPRcsNsrYLy>?Rr({T^#oZQlEv&fu;shbQSwcaf}n_s=ip3f zucP8UAZJKE%gb+hsiclmK9k9D^1XA=9a87WK?YhoqX3v-)u3Pa(2^-|VYQEe zavuKmJtdo=x_U1AgY)p2dkXFVx>j~^=i&YP3YsCduABjN9zL|M;93}8U#Wx->?=rv zep@N6x(+|Oub_a#&@Qcf-@byIpxj%;KIc6A*gjvMNS17r$gzEMPU?lo7RWI9VZ;{| zJGEnfx<|}?N&lTfqmm%|KFvOV54tnESu4~o<)hYh_{hEjG38lgmlOtZyV!S)cs_pr2G`bWF0MG zXsTzc&>Y`aLfz^QDD>DqU#FPdhRksoQ?bv2 z$w~1guvQ``#pVx*@~6|kfue_#VyBuEJJh7ur>43NHPr>+T*9H|#tt<%cBpx?Lrsw# z4mm|Gbpz*wvuGRc^D@Wcvd3A?SAjS_a4GY`DnsKrmP*7e3ho8TGfMuIPUeeFU}UOw zO?5AZXV#a%a8(yJNyV=asVVCK;<8?Wm}|P^xUHq+%#@sB>lftsC8x~#b8_Z-_&}Os z-A?3EiA=RpMCMI-5}ay*YIAB+R%@^Ggpu(cfsy8!PlM^@tY(8-QaP)+wwSFh%0G%r z5~3CCH3at7{VbeiTf z>p0x)`V@>bUG+9ZaF2)r2E6z+$SVXRH#N3g+HomtwMx%92VlB`pN80RYr;ccm0?giBrEf{Z{rNTSM&75m$mIUKwT~lLJE~{y&TwP;9s$eOl=2*&*19dK( zC%oRPy-pvZe3i86skEFvuUC~ur6S8}sbt2xKnfJk0cd~|C3e0wAMCqx?3ZGt;aiR7 zDXX&R2kn$I))g5K?G@f}4=ZI&=eU)J=sQ|W`AoTTtD-PaeV43HRk=0aSLt=mo-v!` zGPJ`~gap1#)Ae%Wo*fSj{9&=R|4;C3&n4gEpW*lI7^K(s%M*+@X*g3}A z)LD!0&qO?27qpeFx==x;3l)xcjydHmm8zodOu;$LYcsML z=h*q}SaM-I`o%8^ zj^duSF-Y=Owk+%4eI*1S3jC0nEyvyKfPVzPgZO<8Kdv7g)@(;HxIwdhxCqXP?RmV^@v@AUt9h|k2#>?e2%OWbx9rlhw%h%X z?Md5Z7#zKyv5Wg{PrvQmZI?9I#qN5$WQSeqm|JBRH`}%DPTP(>Z5KadV-u0f+EMVD zJ-1-@H*D{(?z24LUY-Y*j1MmQFUK)4m3cX9j#{v1Qw5k?fjZ*;R+_X>{)qp3Y;xz}wsYQKX~&Q&GnUfXjMn&GVN|E$)Xnzk3*YtKAnd;gMlsGBh&GqBv) zX~R*_jY$Vi%COAe_@_iD*&R=$+SBT9@niVA`dv6KV2eBoAe0i}w!XG-G__aKAQg(l zIt13n&6`_AEE4IEhYM^8-I<7{B9ez~X!y%}{-J#$lEfe2CsX*V{!n|*t|b3N-;^s4 z6X1@uSX*zThvx+Jwk38&63L8&K7D{P_yhhF|C(Pq2cJ6I(tElRk-m`H1E-D-2!*1t zIGIrB>}l&tireGup*zx%bR^W5PIgNMR)Dd%Ic0#gOt$S-ZjTFhL~wjSTva$6?}&tV zrvy$?=<>@;I+l!f#juT!?}=r_aAZPK8t;khj`YYJJW=t&$p`7aP7@>{OeY% z&~N4ab-k%{EV8C65{o3FVW4e^aQ7N@%8I|P%U_pFb*$-%rB|$AHM*i50xO;{^DIT3 zlmJ9^2$sUi-bfP=jgCiRtN;%o6a8$MHxX*q1djjJiHLB7~A6Kr_uKbwW4-V>e?IO72aDac)E?No`QZTR0kv zs(uoV_x80V#(OL8f)Kp#XjI@zfG&B41p0C$u{(n5sZ%X>r+BVLDBjtbjHDR3-MZol z=@R3qTNhWTXS)h!ICg*%!CA z2Dddgtq*P5-r9U)Xj}8T?c1(zxuIE1LJw`;isEEbno(kcQ(1COUO{KgIll!XM<{+L z?s&jmQS_(WqMEmD+p=w4uzB4F^BAoyo0`|N{K@2%Z>%JS=v<-ATefX#+K2*;D>BwN zl0^;vp-==50gM)qkWYhL?WXljTU!wnRY0;2gP~A^Hu^yVT~R6WTpFDA!p+W^AvE{6 z8B@BZ(w_vn%D7uB98Hy5{QBk%P1`rNLM#^9!)_xFnrY~c_eL6G(OvPLw%Z%lVLWVD zk2|a<-W6?F(zs;t+Qn;^)UCtdasA$8LlbVTu2?Vbd*qj7Zf=af^m47*ZZBMt4*RPsVfLuzkdB#(}KIJA{|c2`*s}T?Z;so6dg8cb6kK=Twv(wxMl{v6Sk63Ur?!s#~?KPp<-6>s)$NFpu|;Ky>!eiB1} z2pLOM3bP-?(EkpZiTvkZyG}%(tiD{_SfWDQH`iDmhZEW1>Id(=F7W>iP%Z2h$=~Pj zwwBNLzd#10JaaCc6vL$kbc?%20*0dCJO|^0R@VC&43{tSDiF6r(-j3TiDbG)(lwF= zIODI#!cBG;=zfD_L7uSS$9u!!Ko$|%k4<9d26Skfbz#&lattaU=sRYfbKWSS@3bt%ke7aWFU)(Y#qi6#$kV6 z9KKF@b~e9~mrF@xUy|keE_mU{&my!loM(q06eo)3yV{Ol_uGgnMiju#MDkN7p`V3b z8Oj~e zzf-+M(v9{wj7>uS*d%mr&zUGbPk_$$&G+*-=>GBIGP##0v2zymxf!Xf3_8F>VKrS}LfUwR^`NC!4yO(?;m@uDF)vB%mR2lHWBhv{~xBi-AJ1ujLM;?8kX1v|(G*rsh!d=JlZv%;czI(!PGj=B7<8>vB2r6h4r! zObs;$wT0mNZ6b8-#w}}`Hiour*l>MwYpAtp?Z#$WmFuo>GA%11*Q0^#^ZCqtPrWC| zVf{xZA@Z2PT;WL8;whJtcXVNfxm2xecx+*Y#v=pO!Ze4JKb19Wha90yY-J=fGf4A# zeM?G z(+Js%l04IyW@Inn+%Si)Cfqrs@n~>`dIx$!ds4mwO6XU9 znlOi;*OEE3Pza}In(obGH77heQ>{Mp6tfSc%wa(q|8q#jNfkXFn)x5F^|6{c5~3ap zZM=y9OeGZTHaWQp>l5{I$iYgZzAwQQ72f2HliJgGV^fE9wjwpHZK>m+R8R5lHoP;d z@7Nnd5ej1EE;+lg2IR6V8wr7zi1f5kLFf8 zt_?NDmn0^S=$S0ZxRDZBkAnZ3EcbI;_~G#^Q#GD9Oa_|$+={AXO`h;l{P2-AqrY71 z8yEmDJGrwFt-nX>8#pgd9*?n{)B-G9->kO`^yf%(Es~o)3>1GF8#nbI*5w;$ z>My_3KsMk1HqgBI8GY_(U^0-Kc$nxT<81W#&5|jKA61OL*%xnMluB7C55+))len_{ zH~Y*DWPF*7|E3%Ru@OaZ54*w5K6V4QO6~C&8~-&~3?ajq8hx{m-oRlkXv#PGrv8s; z{k2-o?8`UM?Bl0CR$&*!?=zq=CdNLe$TDeY{$4>-FKGXxU}Wq2wVr`H^8%h{UVI@> z-^_0ftn!$W6*T&W`lUR5v+gpm#0YAb-+#ZX^-cVRUkhr;%_7;!#NW`KMut^1`gi#i z$G{GSX0G|=e;b@^{WE?gYT#pJW~Kb{e*hjf3&?wbVrE@#&TY?^H@JcS0-e$fts_path, somehow. + job_queue_push(&q, strdup(p->fts_path)); break; default: break; @@ -81,7 +127,11 @@ int main(int argc, char * const *argv) { fts_close(ftsp); - assert(0); // Shut down the job queue and the worker threads here. + job_queue_destroy(&q); + + for (int i = 0 ; i < num_threads ; i++) { + pthread_join(threads[i], NULL); + } return 0; } diff --git a/A2/job_queue.c b/A2/job_queue.c index 19a4f24..58435d4 100644 --- a/A2/job_queue.c +++ b/A2/job_queue.c @@ -31,6 +31,7 @@ int job_queue_destroy(struct job_queue *job_queue) { pthread_mutex_lock(&queue_operation); free(job_queue->jobs); + job_queue->jobs = NULL; pthread_mutex_unlock(&queue_push); pthread_mutex_unlock(&queue_pop); @@ -42,6 +43,7 @@ int job_queue_destroy(struct job_queue *job_queue) { int job_queue_push(struct job_queue *job_queue, void *data) { pthread_mutex_lock(&queue_push); pthread_mutex_lock(&queue_operation); + //printf("push start\n"); job_queue->jobs[job_queue->size] = data; job_queue->size = job_queue->size + 1; @@ -52,9 +54,10 @@ int job_queue_push(struct job_queue *job_queue, void *data) { if (job_queue->size == 1) { pthread_mutex_unlock(&queue_pop); - pthread_mutex_lock(&queue_destroy); + pthread_mutex_trylock(&queue_destroy); } + //printf("push end\n"); pthread_mutex_unlock(&queue_operation); return 0; } @@ -62,12 +65,15 @@ int job_queue_push(struct job_queue *job_queue, void *data) { int job_queue_pop(struct job_queue *job_queue, void **data) { pthread_mutex_lock(&queue_pop); pthread_mutex_lock(&queue_operation); + //printf("pop start\n"); - if (job_queue == NULL) { + if (job_queue->jobs == NULL) { + //printf("no more job queue\n"); pthread_mutex_unlock(&queue_pop); pthread_mutex_unlock(&queue_operation); return -1; } + //printf("job queue\n"); job_queue->size = job_queue->size - 1; *data = job_queue->jobs[job_queue->size]; @@ -84,6 +90,7 @@ int job_queue_pop(struct job_queue *job_queue, void **data) { pthread_mutex_unlock(&queue_pop); } + //printf("pop end\n"); pthread_mutex_unlock(&queue_operation); return 0; } diff --git a/A2/testfile b/A2/testfile index c0911b9ef6f1637f270d1d3e80177c44e6934215..80374c6b4887c6ca1e24f89c50775ee3cc71a66d 100755 GIT binary patch delta 60 zcmdn7fN{qH#tj|JB5$?ly0|rckSKPacv*Doq?{(Ut8+KcVdgd!HeeOy&}U`!;wXhN L$~Nz^s1pYO!VnYx delta 60 zcmdn7fN{qH#tj|JA~V)8Y|U8C&$hO-Wu4N|w%K{7C)949!^~|eY{n|eq0h?d#Zd}l L)NI~mQ6~-n!R8br