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 article
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
Vincent,
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








Dan <ddaglas gmail.com>