digitalmars.D - win32 waitnotify library & requirement of dummy var ?
All, The attached zip file contains a Win32 implementation for Java's wait()/notify()/notifyAll() functionality for D. If you examine the source file waitnotify.d, it contains the following declaration in the WaitNotifyObject class: public bool dummy = false; It is an unused variable. With it in there, the library works fine. When I take out the dummy variable, Access Violations occur. (Try compiling by issuing "make" and run "main.exe".) Why is this happening? Is it a problem with the compiler? With the public.d / privateImpl.d paradigm in use? Is it an alignment issue? --Dan begin 644 waitnotify.zip M4$L'"``````"`````````%!+`P04`` `"``KL)(U````````````````%``` M+DI-+$E-T76J!`F8ZAG$&Y J:`27YBGX9B87Y1=7%I>DYA8K>.8EZVGR<O%R M````;6%I;BYDO5513]LP$'ZF4O_#T8 MO1Z,68Q<X0#RXCIC M!8_%8H%< ^`(8 8Z19B)+!-+*ZO=ND.IK*`#F M0%("`>RW+/B5Q[CMK:5D&F<9)QU/"R>GT^U.8"BVJCZ$*D/,R5ZY+5$7DL-N MOW1D)B006Q4[V(W8A_V([>P$!DML2UQF8AL1!,:25#HV>W"C]J89O-]=`S>R M&J? QPX:( .WJO3C"3R())6I0&$L>**"CJ-K=A>L"RI4ZJY+`W+O";+_:N2[ MYY'/>X+47YBZ+10N:&[>Y69K7*RC%<Z;XR%"^EW8:S)#U4\M5[:96 "-;PLF M`%!+!PA5T9UDR`(``*P'``!02P,$%``(`` `,9.2-0````````````````\` M``!C>6-L:6-B87)R:65R+F1]D#U/`S$,AO>3[C^\8RN5WGZ=^! 908Q5FK ] MBSNG)$Y+A?CO)-< 9`8,L3V\_A-N ZW20<?>CP8R><PFM V78='MB21>AS3 M;INVF3(Q$NS%9O'.A,`4-J7!T]$'152WUB&0<7,U;ZP96)3"WEB">MS/^-T5 M+W,V1X^_R^CQ-(OPT3:`#AP760))T_:Z(:Z*%8Y&.ABEQ1(UT/:[M-P4-(< M->.(0)J"Q*+\F:&`]5].GEU%<MC/XOOO,]KF"U!+!PB+(`%*&0$``/<!``!0 M2P,$%``(`` `,I.2-0```````````````!,```!C>6-L:6-B87)R:65R26UP M;"YDE91!CYLP$(7/0>(_S!&D+.DYJZKJML<>*K55CY%C)F$4L-FQO32J]K]W M3I%)2S\5&S+[-1AK[GJV==">K(''H%KR1]"VQ K AT-0'HXV,-C!`),[5'F6 M9YWL:!'T48OQ5C$3\GU<H*ZW[,'YNO(-HZJOJMBI7D Q%05#ZBUV:+Q*W7>6 MX5.R?#A9CC+!<.`'*UC!>.%^<7)+L`;!6]BV5A_ U-1!SR1F4A9S9-F2C`9% MD4UY7((RM: 1K-R24LQ"ATD36TQ.:N?C>H/)8<P*^`MU\.BJ5/V*W*C>`1G< M[4B3-"T^E$O8! _2<;!\<*DA.7!ADJ2\W5&.AWOKDE>>:3D]=ST%6,/W!`._ M\PQBM"=)$!\6)"XF=)L1]GXLU=CB7C1%.0%OIE*4?)NF)UZXF127IW,A&< W M9&95`,\1&60ZY(H;EB7\ Z1,">+6ZF(;O+\-E!2WFT4VEVPV3[3$`<Z1BBO* MBX<R6KR6]_]<Y"5C7Y33D"`- X,I3JF'AEHL/(=Q"O/ E=*/ :Y;)??%;?;B MV?/L#U!+!PA\U2!<\`$``-H$``!02P,$%``(`` `-).2-0`````````````` M``<```!Q=65U92YDG1==;QI'\-F6_!_6D:)B 0^GCR1$<M6'5(K25J'* VNA MY6Z!;8Y=LKMGFT;\]\[,?MP>'(E32^9 OK]G;CQFMXU;:S-AOW(%_ZN:VXOS M\9B]EZ505DS8MEG4LF25WG"I"/6)&R75:L*45M=;HZNF=%(K]J7AM70[5NI* M%(S]907CCNUT8YA^5,Q(^[FX.+\XWP!'+8!<-.(U`N1FJXUCCUPZI9U<[ * MH/H3B5 )GEJVX8JOA"7=8Z\<V+2II"+Q(Q+UN)9 L&T6Q"0B&[-.&WP:\:61 M,6LQ,P ZE<X!G((IE$?E\20+W%K:`?EQEBQE4Z;$(SMTQ<N-3GR+*'KG4Z,? MOA\"&* ;HP(30O9L"4U2UT%STM&HUJ[]28>.ZK0;Q^_Y1MD-SB6>S+N8M)BR M&XB=!UGX&+XB&Y=LD!!OI]Z=HA9JY=:4FXR++` UE,"7T^CO,PSR]<^"C`[_ M2>:LL7V48'H;-\B9*<59,Y`3=X 9#N^CEQ2Z/ \1,<U]2_UQVJ.^J=+F\([B M.[P'4Q`3+3 98T1X"Y`LE Q[0P5"%`DV)=C1D&FW D]W]/>-S_55UOWX^SJ6 MJ*AAP\.>(&()6X*;E3!0H=P39GRYU<,DA*KHV):TB]IL1Q<HTWM4^C_[\+B% MWTOU653OI77/[V,OX0/<.0%T-DO)0BA1*O'D\CIH6Q_,IW1>OV7J%7W^C)]% M4>"#P MMC-GE/!I^H2:N3D<1]T9DFW!?GUA*$6=?J:"H3"'(;TT?)4HA;4<!CV>%4+" M^AY.UF?P)`5,1NLJL6A6*Z )A-$/7Q-G,</AFK6N*MP:'*QB_/RO=]P/UEC: M:<T;ZRP>HYCJ[?-GOG<,7%)N.7CQLII$_"2:X$PC_E8O1AVWKK))B`0_,ME/ M:M7;"7M9'>D*]7T)DR<60*[^"-EGB]VI<FVT JI^[M8X5)>M#B0HXAR`A"T$ M%`R\0L5F_RUT>=LJQ!$&!7*TM)X,0"NM0V</=%V]0[1=ZZ:N0#Q;<;/`%Y!2 MU[7W"#J'IG[:&;F]<6-EW8F*KZ_G83%\?XOU1^SD2DN3!D%S!;]ZQT'"QN9. MJR\A0F]WIE3<5+F/_I++4P;8M. /TS+NF;8'<RR9$/GY$E[*#MC)[*Z8/:,% M^?5`:^2 6!PH1EQTM*OV.[:$U1%E]EB#Q-V_;YG>*;WA,)5'GOT!3OX0[H/3 M````````````````"P```'-E;6%P:&]R92YDA5'!2L-`%+P'\ ]S5*B-O49Z M*%BA4/10Q(-(>-V^ID\WNW%WTUK$?W>3)A01\;"PS)MY,\/+,LR:L+,NQRV9 MX3'PZ!D4<+2- ST8./%OXS1)DRHJ-,-S176TYIL6E*JV+N!`$HP-LCUV:'3K M];G^)/7XJG6<[4DTK35?M)0OQ%K_QS^77&C-)>F9*YN*39A_**Z[8^4X_\]E M!PC*4#R.2P$``&H"``!02P,$%``(`` `-I.2-0````````````````\```!S M96UA<&AO<F5);7!L+F3%54MOVD`0/H/$?QAQLE7')%<>E5";JI&B]!!5/505 M6LS8;+/>=7;74!31W]Y]&4,30JDJ]0`,\YYO'CL8P+362R&'\)YP\RD84;WN M8`"W-$.N<`A5/6<T X4H">5.](5(3GDQ!"[X127%HLXT%1P>:\*HWD`F%I " M?%8(1,-&U!+$FH.DZB'M=7O=TE P!(4EJ4QH'%DF+2LA-2B]2)66QOUHQUL3 M^A/HP\^]]J1:W#NB325.8 MZ!Y+UNL?3]3)7T]R#U M1J&?A,[_94EVH-+]'A[,H),^D\"%C[DWR/X"K`1=-'O53*DQO#H8RO/&L?$6 MF\4,^WIR'E^?Q.-8,)$]1!X5N7$I=]9+RC!J^FVM+;=CKX77[`1$'#R.8<X$ M&S9Q$TLD]G=W6P*9!.%L3]!NQ/,.C">_B_U-GS(6G=V9T(Q[ZVS:+&WD^_)" MV1)U+?GNBI\5*EL2^?4;["#W08)'O:E0Y)%=SSAU+Q/EN4 Y*=$Z-F=A>/0> MB(]$+:,X#HK)Z3-S2G.GU1R$+9B']/2#V3ZKQP;7&+7TT_Z3&>`I53':O8LM M+VGDN5E?,R/MI-H.,LH],PPM/(%)7M452 =I:CP8N?UV!S:RA3M/KP%KO;J+ M'/?C9Y>Q20V5(H6;&`BMM!4XS'K=7U!+!P ,.\TX!0,``&L)``!02P,$%``( M`` `-Y.2-0````````````````P```!W86ET;F]T:69Y+F1UD4%/&S$0A>\K M/)_K&O,86N=G^*IL6CNCI"SJ&E>LR0K-L(\;PQJ-ZQ3;4;I3WK+=S6"=_;3W M$J80VV1GP9:3Y_P#L*3.]8D1.$"K*"28:TTBM^R,RK1DBAY:2FBBS421$5<- M#AQ M$L8R;0$``',"``!02P,$%``(`` `+I.2-0```````````````!````!W86ET M7<*N7SO48+A32#GU77E MGL!C>)Q/QI-Q%QG.PEZA$`MNCE<I&H6QVSG;65)9CC?1">4N0^[7/ZV6A(L M] )!S%S/]TB&]^'EG87L0:PG:#ZW\'LR!D`2^/)UA832M%<I\L1H4LC8()Z/ M57,:&;ONMTF(9--,4WS9%&0;H1_,#YK.3KKMBS M,4\7\A[GVKF*]G8Y0V9\_ )02P<(0^M )YH!``#X MPX`F,>`Z*>HMC8LZ708,A4%+=,1%(EV1BN(-W6_?'4F]V8J;MG.+UB;OCL>[ MYYX[Z:F009R%'$ZT"87J18.=PT-8J!0N/UY<[.T^K>_'8HX"]<5<R%#EVJ[N M`I<7J4I>6;'(F.6KP\,\SWN![N69-G&/A]GAOSJ($A&:0WO&07!W<-2+3!); MI:E)F>$W FM[E7&RC'G"I1'R!MY/IN,_8(0^"3H2?F>I8/,81?''-1FS)JY9 M[%ES'S6G *Q4EH+*):1"W_8H9D]#OA"28[C?S2XFH]^F<-3O]WTTPR0`S7FB MP2BT#N)&JI1)`VH!4_S!XLG\+QZ8H0ROF3"]'IH\NYY\.(/K\>7P_;A-J+.W M"_!V>'EV<0Z1V[E23J[;MD4Z$VFWG.DP?R?B6&A.>=5VX_5D< 'S8<Q30Z'< MV]T_IAN8U9+C]4";%,,&_Y"H0.]S-,E3/0M4)LWLF)9''\97X]'P8C8]'UV- MOGPSOAQ?G3?]*%11=SB^FDU>_XIIF6US*I-?=\M;_\!CCL7O E$(X%']POKA MPN[!WNCKF Z4Y:F9E"Q!1B;%L?,`ZVJ$-Q`!BZ?<T6'GV6;L;,WN'Z\'UA9H M&:KS.Z3E,DS?&B'\O!E>3,_M'5EFU`$"ES_BD U%J>2!M 2(]RRC_" C/EA5 MG*KZV-MMX(RN#ZT(;CUHHX[X/48/770KB&V+6#QX MHLH/9,IMOGQI-RXXN_NVM'O_KJA_HDZ,_4\EI(T(3AT%8%^+N)L)[!A`EFP? MQF6OKLM:0N,BAI-&"%W:!H!-OKE1UNG`VV%H <[&%,]Q1I$*CTC!J?3JG&GN M6(SP;.F<T%G+0K>J_8I(NPY9+IQT_\G9Y!4$$0]N"P*D$["#N[/*0'W +/B< M!T4[^"T9#J9!%N/T6OKFS:"VA)CCH(O8)E-U2&D:% /.';8P6)W:A7V[>; \ M_#W42U41(:0]2'19%HT"&/BIXT?03SCEQ(CT4,/DJAB>NP[3_HD'&/+$ 5HB M.6E2RX"N[JW1^"CP,0UCCSV)&8\DI.+(U?-W=]*6=!;,1:%L3VV=&:YMBBK: M00AW;?63ODLAAN$O?"+&CLE]#CV1 M5VJ?;(PO`_LP355($U.5+_R'^U-;Q^2C8[>Y% VW_*4*20-=]4"P6^S^RY)G M"Q,58?8> <7- 'MP.MWOJR?O'W(BA:9PD.7HL21P^EY`O;S&R-809J"T4`XY M6VFKA76;S%75!]/$4?3* S"B;MG*0R<7)E*9:7:6VL4&!(<02FMS'K!,VXG! MM;=&J]2VV>0^/_:6`?8.[$+;\-`O$ ^U;O#M\=\D%?1WF<UC$3RA7]I .0>; MD[3]PO6?Y1N73\<;PB7ST"N.5DDJ[]DL"68BO"]+FQ;?7[FG3(] FUV68IT1 M0NC%V*K4*VC"F2A62_80]ANI=<1I_UB<E!+BY4MDQ!TJFN(VXA/-1O9YA`[> MV7%&R<;.SAPO=4O?;-!+E?`>E6#SF7V?WE^IH$-O4-1B?7_?/RG8T*S;*`+W M `FW[2VTO$RIN]84JA[?JX,]T6(4RDR<G%(T*3A0!M0_P7BTN`A;O-CQ&O,5 M<FU2M>KX7/C,C6*E^5OL'S%O\6N1\K;E,Z0 LX[CSK.:T^UXKAE=O]]:NBC% MFPGPJ[X,'OFI0;;V9HE6$M%\9=/R`JIP*Q&?_&NAABG_/NCKQKS IKGONTC9 MK>S1 >C"-A<J:1?-0'SJPH,WJPU_WOH6JUZNM-MBJF3%KUNK1-<-TI__`%!+ M!PCI6]PIH0<``,87``!02P,$%``(`` `3Y.2-0````````````````H```!2 M14%$344N='AT;51-;^,V$+T;T'\8Y-*DB&4[!;K%GIJ-][!MTOU(M]M;,2)I MFS!%*B1EK2_][7U#R881 M=S2G+^_OUT_O<7 *GE9WB]4OB[OE\F>J9FOVM.:MXP2KUN7TZ[9EZVH5VFI6 MS?[<F7/6+H:#U2 M 'HX*F?5.X[1FGA+SZ;E;A>BN27VFAH7U-[Z+;WTID>BZW?3Q7V,?/PLE]5, M$V\-($NW+:.OC77`U!Q)FPWW+N/<6Z?11;X 1*"4I.:[1%^54!BO)F^Z=`[> M'>N1T.&L6`WKB5=--I7`3(/-.UH_K>?+>O7F37T2XJKK&]!W16M*H8]JQ)DN M\^E;4H7C9N18+M*)97R,_!5^047;ITP-*#M`<G8XB7;$79=(]U&DP!QTL(F& M$WH[Z9K+Y03A^D>1N]:C!`!#T;ST-D(!3`*\6(%$F]%C-8L&69%!> 9%QW/, M5,*6300X4\1\5:XQBOMD)!!_D-/`SMD _!JXH]F4T?5AK#HR4`BYJ5\_'I&? MAA#W"4<:GZ8D0XJ"^UJ<ISY(!Y/\#YG,P?AJMNTY:N*M`,_C:(DR2!,$Q46: M&X*DV7ROU;E3(;B:C?6XLZ38N?)$S[V*J[:EX0-'RPWTG-Y"":MFKVB1,>4$ M&Y(UD:;I1OXR%-*$&M5.I/H8`<K)]LK"RFJY7)8Y%R/+"%`;M-U8>9[^S"XV M ]JQWTHW0L$?7Y_^>?SX\/LS]H&*`40Z3*$`ND]4V Y^S&!8[2Y?[RWB40N_ M:2)UD)4"4?2XD48C7 =F- ;=*\DU?^G9V7P\N7W%E&+"C\A+8?`4;=J7\O^S M,%/ Y?+,RRS)3,Q1 *KCY0(`4$L'"`9YP3$P````,P```%!+`P04`` `"``J M0K?+M#OQ%&84FLPV,]U.9DHSM&$1A62:R=`VN\L,[$Z[(W]T8'=HAR7\H-6> M<]_3\WNR;,ELTNED]\$[[]YSSSGWW',_SKWGRO?G$U)&R!Q""7L&%Y*\D-#G M"O3X \+6OH!WG9N\GD/(R$;?#I:X0.UMY!RP&)M>K&_-YEL;][0:[3L:&K/Y MAOK6>B.";/N.[<Y6([_%Z<R"EWQW+GD;A6<9*:8]C[,(R<Z1TXB?,V<R;9I+ MR=\;B(&<JR'5?$.MJDRM,Y':P'>)_F!+D\?3;D]53BYGD7F$G%M)GDDM8*.K MZW"_)RB`B/8!I,Z=D3HH>`572*$>MI#Y/"\<[1("(N_UA$2"`LP X#FR-K6` MBHV^_CZGUR^&Z =<'J_K !=DM7N0#ZQ_ M'62OEGQ]U5:O5^AV>>N#W M+VA`/.!MOXPTY*P7JER7F<H)%:PP",ES&38SH=(^9"+GUI(U?$-E2'17P^L* M=E=4\7QK]8"+AW1KO:M=239M<PPH=EF8EJM?S]6/7/EIN8[HN8X 5P%PK2&K M]%R5&JX>'5,/\A2FX^G6\70C3U$Z'KTAF!VX=#QZ,S`K+$K'HS<"LT$Q\)A) M5E/+%D-3"WP:U47H*7GA>=L(Z<5*&O%+(#V MZ&\G<WG>UP^#Y MD&T(`(T(-`.D"`;]U*%-" '-DMC4Q/Q"LT^5I:XLL*Q,+AYD^!2NC6[HB:#K M6)=+]&%K--945865%%2%"5M1?L3E$7U^T7/P6$7U;DAO9VFYZ;5R0;W7R_1> MDXZ^6BY Q&3X!.H^,T,5%F8HN]_G]7<=8L3IY:JD9/ (63REVR?[(JVHR?Z9 M(F9M;\DYGW"D"^LCS>DT2XR"=OO,=+`\[YG5\LP&WG=PI5VBY4F:BU?84GSA M41;S`.!A^1"Z6&M??TBT'A"L+FO`'_*(G '!"L86NH6 U:54MLYJG:3?;$7^ M3?+VAR3O?<`;DF9X1=<AP:>1[?/[UOJ `=/)E^EEV?C4P+M_&OEOP5LF<VQ. MT)O O0*OW>4#N[)":Q^P647H7Z (=$CL);2M4?G+X;TU37W%L-=3=D"EJZQ! M :5"Z0V&S=F(LFEJN0%E#VF MV*`4WD,:?`=A>UWV(&NI09^O ?R7-?EFR,O["_VCZK)N<LN9>,"/$MS< `\F M34_#MR8+#PW3RTT\^V8H#TVQ'B%SX7TW2V['??BB:1ZGEC&RDHX-<O2IL;<X M^LS8%8X^/?8!1XO&/N)HX=A-CA:,?<+1%6.W.&H=N\/1Y6._X>BRL1A'EX[O M`[;Q$QPM'G^#HXO&SW.4&X\`[SB(*AS_`?".WRFDAO%/$'R$X(<<-8U_!U-6 M!$<1!!#T("A!8`8P]AC!?8YFC]WCJ'%L H/L-8[FC%W& CT(WD#P M-""H0F!KRQZS(+^YS3CZ"&2,/ #T**HS^D:;8?1UD#AZ`G->!&4(" '$4-<8 M,L*8SR>)O,RPEU!D"8 LU8A\_M]?.9 LLE C\!/&>A. 1O%"BD +P%YC+U4X M2[&DC)648LDRJ*E,4U.8-TN_6/-Q>(=%NL%W= Q=LUR%!7GD'TAD(4=71Y9S MZ4-P!4"DDZ-S(O\(X,TE`$8MV*?SL/0A OL(?HO -H*+",XC.(/ %`(G A8$ MFQ%L9-W^Z>14H;E?E>[UQMU2$>9Z?HNV<8=7,F/<,SE 0$ OF6`0;-.;][IN M"'B9O7JHOK].,.P 6M&F](5L0ZEQ0C+%=Q;?:'S,LE^=J&VWO&)!='F\S2J] M,E'+6X[?EUHF5NVU`!&NTJ=;'O3&=_:\/EF'N0<]B5*,O);XKI*HU/+`'9Z/ M%-`[TNA+5XWD$C+]3EX8.DED+9K^>;3Z=NP.'W;'CSCZI< X1U?&2M'J/6#K MV'^ O=Y!,+\-YA!'LV+O08)'S%X$6Q'8$11AH0D`B8YI3&O6F?;F$YGV#C/B MM-$;LB6-L2 :ZVU(I+'DMS26G*^SY'&])>$_KEM)+7]I0K(G!H]C` Z*9$]R MBZ(]AS(80=%+%H/:ZF<)SN25L5?DUF3'#J M* -V7SE`R6Z>7$ 9M ZQ42DWOG.RI)65.!C\-H-G`/;.45>MNHXH&=E,(G.P M,Y8BV,A16Z0=EI78-E1U)X)&!%]!L`;!2F9P!'EL53BLT3C/`2K'-SQFE3U" MK".1(E2W&31%=1>S%2I6 >`9!$L1H/^,Y3`E"S1*6B1'H51GB9+H4H+A)1F[ M3<$BR710PA(IF:485$ 47+`0PQ_81 >W VS;-))+F#UB!C3*A7DD!XO9N6<D MA\2( C7<3^R/&):C"\DI=4<YF$\LDX>SSRN >X9D$M!]X3,\4RHAWC*R.KU( MMRQ2C?2NF<T!7 GNKIU=A$`)[692DQJ"4.*[F=2DB7,H$=OR64=3Y&#M</C/ M%KQ:-J6>Y,B5=\9023Z4)<=$4L>L\GE'*]_E][GY`T&_R]WE"HDD3\6%/-T^ M2M/VFQ)Z9C,S\\ /.\EE(IRUWLVD1TLT2^ \9=M MH7K3>$/8*V#E2)B `,/ MB2[6T.4ZX %38HNR1Z;*AA.1GLJ<FJI`3S4_-56^7K,%#JG9M'.G0F=2Z.; M&J:3EI=:FD5/94E-E4<NG&,'2>*>)":3MEPW-6*E/&;ENT1)YR;)2/64IBG7 M/2,=)%;*T04Q!T?GQV`?98YY.9H;"W!T7DSDZ-S843AXQH9Q P4GOYP8'%JS M8W#J-<:.XR[$C>Z!)(YZL58X',8V80K/DAHWH#Z M//V5A] 3%%SNM%<>QFPR?!$O[S1,U:WR)RB$^OL$9J)EJ0 V!%S](;D\M0!/ MZ!1=(JJ20L;Z5F=J_941<&C:]H5$5U!4(O]_2:[UU(RN=6FJMJ3SLD]Z.T^& MA65 9#F MY+AQ"57B^S2E"+G^D2$2<\.N!7UK?BP".X[86["AB/T`] NQ'Z)+?A==\B5T MR=?0)7^`+ODC=,DWT25_ B[Y%KCDT1(,TF)4>-2$ 'GC1RRVAQ[Z,I<(U[&" M9JGZ,/^4K?%/BCYOURW7Z'.V!X_O?$!>JY3-N;P+AR>Y`'?M5BPH2BJ0-_AL M7N:K1>PH +*:F+"SAS&2H"]%!_!U+"S4X^53!<:9R2)]B7H&V8^%ZJ$ABCGM M>:**&1IM^3WG]NUX?YW-'PP*`JSNO*<OP/,- E<0!3MX/D^7R^N$)=SC]]55 M 29RN=WK#PG-[/H7L'/X/I<7V B+NUS\HN`:2,%=HA3C)KC)'W2"T_`*LH>H M)U%H'!!\8CWBR7``W*%<MA6LY'%Y/2^GT'JQCE]5B<DHTNO; OT-+/HJ&;8> M>F")?\T1S K;;0Z9X/0V8]A>LE/.].KJ"]NM'7NB#L8)9&V2:"M4"$\[C?&L M;X.&YJ';Y)_N+E?83]X6%X)L"DPE\4")3B;ZPS/8.!,V3E&ZXF%MY:OF&W8\ M:&C3Z?/H`_N-X5_<G5O_/$,?_UVOLGLPCF!I;VDBQVQ9Q9`3__E'Z,`JAIIX M:R88`VQ$59UD(D[]$:LU*AVB+3FAE+`N4I`P9B%YFLG_$2LW[4V(8\ U?]** M.Z,MVJ\4D9&'!&/I"V*K\7B["7WN2^AS>]'G'D6?^[?H;K\'Y][(.^A]?XS9 MBSLX2L?V X.^"!QT]%\+P9'_-X"Q>0 V(W !03^"TPB^C^`R BP$'((V!-T( MB_B%'RULHK],+N)GE[YH%3E3!Y_W,K\OZ:2SN)#II"3MF?Y]^AF'"-^G&4?L MH.Z,`W!`F]'/^*<YD_Y%/+#RKY MC(<G^;L#FM'?>=#DRQR8V%,V^%_XR9[B*2"-*;!M\+HP`4=Z[RS_M`+&^"Q_ M.6R.K`"[?F8W^)TT\RO-S S6X<1U#JS M5VDT*2AA-ZAA)NBS5,$R[119QB"Z_MIG2`&9^O#Y4ZX MR^ZDL_R=`O3]=/&T_Y_F__OG?P!02P<(V-4;'PX2````. ``4$L!`A0`%``( M`` `*["2-0`````"``````````D`!````````````````````$U%5$$M24Y& M+_[*``!02P$"%``4`` `"``KL)(U`=72<T<```!'````%``````````````` M```]````345402U)3D8O34%.249%4U0N34902P$"%``4`` `"``SDY(U5=&= M,9.2-8L `4H9`0``]P$```\`````````````````P ,``&-Y8VQI8V)A<G)I M`! %``!C>6-L:6-B87)R:65R26UP;"YD4$L!`A0`%``(`` `-).2-:^./YW0 M!0``'!(```<`````````````````20<``'%U975E+F102P$"%``4`` `"``U M<V5M87!H;W)E26UP;"YD4$L!`A0`%``(`` `-Y.2->X2QC)M`0``<P(```P` M4$L!`A0`%``(`` `/).2->E;W"FA!P``QA<```<`````````````````DQ4` MDC78U1L?#A(````Z```.`````````````````%LA``!W86ET;F]T:69Y+FQI ` end
Dec 18 2006
Thank you for your waitnotify library. I was looking for something like this. I have implemented something myself but your implementation is better. I believe these wait(), notify() functionalities should be part of the Object class, which means to recompile phobos. The problem is that it is not possible to add members to the Object class. I've tried that and the compiler fails on an assertion on the Object size. For your SIGSEGV problem, I believe that it is due to the public/private implementation. In your waitnotifyImpl.d you added an int member to the WaitNotifyObject. It means that the size of a WaitNotifyObject will be the size of Object + the size of an int. In your public waitnotify.d, if you don't add a member the WaitNotifyObject will appear to have the same size of a basic Object but it is bigger in fact. I believe the hidden int member gets altered by other objects in memory, the place where it lies looks available. I had similar problems when I was playing with phobos (adding members to classes and recompiling). Another thing that is important when using public/private implementation is to always keep the methods in the same order. This is because the D compiler stores the methods in the virtual function table in the order they appear in the source file. For example if you have a public file like this : class A { void fun(); void afun(); } and a private file like this class A { void afun() { ... } void fun() { ... } } then when you will call A.fun() from a program importing your public d file and linked with your already compiled private implementation you will have A.afun() called instead. The same happens when you try to call A.afun(), you call A.fun() instead. I had this problem too. I hope you could read my poor english and that I could help you. Vincent
Dec 19 2006
== Quote from catrino (catrino cbs.cnrs.fr)'s articleThank you for your waitnotify library. I was looking for something like this. I have implemented something myself but your implementation is better. I believe these wait(), notify() functionalities should be part of the Object class, which means to recompile phobos. The problem is that it is not possible to add members to the Object class. I've tried that and the compiler fails on an assertion on the Object size. For your SIGSEGV problem, I believe that it is due to the public/private implementation. In your waitnotifyImpl.d you added an int member to the WaitNotifyObject. It means that the size of a WaitNotifyObject will be the size of Object + the size of an int. In your public waitnotify.d, if you don't add a member the WaitNotifyObject will appear to have the same size of a basic Object but it is bigger in fact. I believe the hidden int member gets altered by other objects in memory, the place where it lies looks available. I had similar problems when I was playing with phobos (adding members to classes and recompiling). Another thing that is important when using public/private implementation is to always keep the methods in the same order. This is because the D compiler stores the methods in the virtual function table in the order they appear in the source file. For example if you have a public file like this : class A { void fun(); void afun(); } and a private file like this class A { void afun() { ... } void fun() { ... } } then when you will call A.fun() from a program importing your public d file and linked with your already compiled private implementation you will have A.afun() called instead. The same happens when you try to call A.afun(), you call A.fun() instead. I had this problem too. I hope you could read my poor english and that I could help you. VincentVincent, I appreciate the advice. I will try a few things, like experimenting with volatile, making sure methods are in the same order, etc. Thanks. Dan
Dec 20 2006