Thread fails to start

Adam Conner-Sax adam_conner_sax at yahoo.com
Sun Jan 2 21:00:57 PST 2011


Okay.  Here's a working version.  Does all the hand-coded queues in old-style
threads and the message passing via spawn.

Code attached.

FWIW, message passing is (in terms of avg and max latency) on par with the locking
linked-list queues but the lockfree linked list queues are much faster (6x to 7x)
in all the scenarios I tried.  I'm running on a 2 x 2.8 GHz Quad-Core Intel Xeon
running Mac OS X.

Am I doing the message passing wrong somehow or is it expected to underperform
lockfree queueing if transaction speed is all that matters?

D really is great.  I haven't had this much fun programming in a while.  Thanks!

Adam
begin 644 Queue.d
M:6UP;W)T('-T9"YC+G-T9&EO.PT*:6UP;W)T(&-O<F4N871O;6EC.PT*:6UP
M;W)T('-T9"YC;VYC=7)R96YC>3L-"@T*+R\@9FER<W0@=&%K92P@=7-E9"!L
M:6YK960@;&ES=`T*+R\@;6%Y8F4 at 9V5N97)A;&EZ92!M96UO<GD@;6]D96P-
M"@T*=&5M<&QA=&4 at 475E=65?5'EP97,@*%0I#0I[#0H@(&-L87-S($YO9&4@
M#0H@('L-"B`@("!T:&ES*"D@>WT-"B`@("!T:&ES*%0@=F%L*2`-"B`@("![
M#0H@("`@("!V86QU92`]('9A;#L-"B`@("`@(&YE>'0@/2!N=6QL.PT*("`@
M('T-"B`@("!4('9A;'5E.PT*("`@($YO9&4@;F5X=#L-"B`@?0T*("`-"B`@
M#0H@(&EN=&5R9F%C92!1=65U92`-"B`@>PT*("`@('9O:60@<F5S970H*3L-
M"B`@("!V;VED('!R;V1U8V4H:6X at 5"!T*3L-"B`@("!B;V]L(&-O;G-U;64H
M;W5T(%0@="D[#0H@("`@<W1R:6YG(&YA;64H*3L-"B`@("!S=')I;F<@9&5S
M8W)I<'1I;VXH*3L-"B`@?0T*#0H@(&EN=&5R9F%C92!-97-S86=E7U!A<W-I
M;F=?475E=64 at .B!1=65U90T*("![#0H@("`@=F]I9"!S971?8V]N<W5M97)?
M5&ED*%1I9"!T*3L-"B`@("!4:60 at 8V]N<W5M97)?5&ED*"D[#0H@('T-"B`@
M#0H@(&-L87-S($9)1D]?3&EN:V5D3&ES=%],;V-K:6YG7U%U975E(#H at 475E
M=64-"B`@>PT*("!P<FEV871E. at T*("`@($YO9&4 at 9FER<W0L(&QA<W0[#0H@
M("`@("`@(`T*("!P=6)L:6,Z#0H@("`@=F]I9"!R97-E="@I('L at 9FER<W0@
M/2!L87-T(#T@;F5W($YO9&4[('T-"B`@("!T:&ES*"D@>R!R97-E="@I.R!]
M#0H@("`@#0H@("`@<W1R:6YG(&YA;64H*2![(')E='5R;B`B1BQ,3"Q,:R([
M('T-"B`@("!S=')I;F<@9&5S8W)I<'1I;VXH*2![(')E='5R;B`B1DE&3SH@
M3&]C:VEN9RP@=7-I;F<@82!L:6YK960@;&ES="!A<R!S=&]R86=E+B([('T-
M"B`@("`@("`-"B`@("!V;VED('!R;V1U8V4H:6X at 5"!T*0T*("`@('L-"B`@
M("`@($YO9&4@=&UP(#T@;F5W($YO9&4H="D[#0H@("`@("!S>6YC:')O;FEZ
M960@*'1H:7,I('L-"@ET;7`N;F5X="`](&QA<W0N;F5X=#L-"@EL87-T+FYE
M>'0@/2!T;7`["0T*("`@("`@?2`-"B`@("!]#0H@("`@#0H@("`@8F]O;"!C
M;VYS=6UE*&]U="!4(')E<W5L="D@#0H@("`@>PT*("`@("`@3F]D92!T;7`[
M#0H@("`@("!S>6YC:')O;FEZ960@*'1H:7,I('L-"@ET;7`@/2!F:7)S="YN
M97AT.PT*"6EF("AT;7`@:7,@;G5L;"D-"@D@(')E='5R;B!F86QS93L-"@EF
M:7)S="YN97AT(#T@=&UP+FYE>'0[#0H@("`@("!]#0H@("`@("!R97-U;'0@
M/2!T;7`N=F%L=64[#0H@("`@("!R971U<FX@=')U93L-"B`@("!]#0H@('T-
M"@T*("!C;&%S<R!,249/7TQI;FME9$QI<W1?3&]C:VEN9U]1=65U92`Z(%%U
M975E#0H@('L-"B`@<')I=F%T93H-"B`@("!.;V1E(&QA<W0[#0H@("`@("`@
M(`T*("!P=6)L:6,Z#0H@("`@=F]I9"!R97-E="@I('L@;&%S="`](&YE=R!.
M;V1E.R!]#0H@("`@=&AI<R at I('L@<F5S970H*3L@?0T*("`@(`T*("`@('-T
M<FEN9R!N86UE*"D@>R!R971U<FX@(DPL3$PL3&LB.R!]#0H@("`@<W1R:6YG
M(&1E<V-R:7!T:6]N*"D@>R!R971U<FX@(DQ)1D\Z($QO8VMI;F<L('5S:6YG
M(&$@;&EN:V5D(&QI<W0 at 87,@<W1O<F%G92XB.R!]#0H@("`@("`@#0H@("`@
M=F]I9"!P<F]D=6-E*&EN(%0@="D-"B`@("![#0H@("`@("!.;V1E('1M<"`]
M(&YE=R!.;V1E*'0I.PT*("`@("`@<WEN8VAR;VYI>F5D("AT:&ES*2![#0H)
M=&UP+FYE>'0@/2!L87-T+FYE>'0[#0H);&%S="YN97AT(#T@=&UP.PD-"B`@
M("`@('T@#0H@("`@?0T*("`@(`T*("`@(&)O;VP at 8V]N<W5M92AO=70 at 5"!R
M97-U;'0I(`T*("`@('L-"B`@("`@($YO9&4@=&UP.PT*("`@("`@<WEN8VAR
M;VYI>F5D("AT:&ES*2![#0H)=&UP(#T@;&%S="YN97AT.PT*"6EF("AT;7`@
M:7,@;G5L;"D-"@D@(')E='5R;B!F86QS93L-"@EL87-T+FYE>'0@/2!T;7`N
M;F5X=#L-"B`@("`@('T-"B`@("`@(')E<W5L="`]('1M<"YV86QU93L-"B`@
M("`@(')E='5R;B!T<G5E.PT*("`@('T-"B`@?0T*("`-"@T*("!C;&%S<R!&
M249/7TQI;FME9$QI<W1?3&]C:T9R965?475E=64 at .B!1=65U90T*("![#0H@
M('!R:79A=&4Z#0H@("`@<VAA<F5D($YO9&4 at 9FER<W0L;&%S=#L-"B`@("`@
M("`@#0H@('!U8FQI8SH-"B`@("!V;VED(')E<V5T*"D@>R!F:7)S="`](&QA
M<W0@/2!N97<@<VAA<F5D*$YO9&4I.R!]#0H@("`@=&AI<R at I('L@<F5S970H
M*3L@?0T*("`@("`@("`-"B`@("!S=')I;F<@;F%M92 at I('L@<F5T=7)N(")&
M+$Q,+$Q&(CL@?0T*("`@('-T<FEN9R!D97-C<FEP=&EO;B at I('L@<F5T=7)N
M(")&249/.B!,;V-K($9R964@*'5S:6YG(&-A<RDL('5S:6YG(&$@;&EN:V5D
M(&QI<W0 at 87,@<W1O<F%G92XB.R!]#0H@("`@#0H@("`@#0H@("`@=F]I9"!P
M<F]D=6-E*&EN(%0@="D-"B`@("![#0H@("`@("!S:&%R960 at 875T;R!T;7`@
M/2!N97<@<VAA<F5D*$YO9&4I*'0I.R`@("`-"B`@("`@(&1O('L-"@ET;7`N
M;F5X="`](&QA<W0N;F5X=#L-"B`@("`@('T@=VAI;&4@*"%C87,H)FQA<W0N
M;F5X="QT;7`N;F5X="QT;7`I*3L-"B`@("!](`T*("`@(`T*#0H@("`@8F]O
M;"!C;VYS=6UE*&]U="!4(')E<W5L="D@#0H@("`@>PT*("`@("`@<VAA<F5D
M($YO9&4@=&UP.PT*("`@("`@9&\@>PT*"71M<"`](&9I<G-T+FYE>'0[#0H)
M:68@*'1M<"!I<R!N=6QL*0T*"2`@<F5T=7)N(&9A;'-E.PT*("`@("`@?2!W
M:&EL92`H(6-A<R at F9FER<W0N;F5X="QT;7`L=&UP+FYE>'0I*3L-"B`@("`@
M(`T*("`@("`@<F5S=6QT(#T@=&UP+G9A;'5E.PT*("`@("`@<F5T=7)N('1R
M=64[("`@(`T*("`@('T-"B`@?0T*#0H@(&-L87-S($Q)1D]?3&EN:V5D3&ES
M=%],;V-K1G)E95]1=65U92`Z(%%U975E#0H@('L-"B`@<')I=F%T93H-"B`@
M("!S:&%R960 at 3F]D92!L87-T.PT*("`@("`@("`-"B`@<'5B;&EC. at T*("`@
M('9O:60@<F5S970H*2![(&QA<W0@/2!N97<@<VAA<F5D*$YO9&4I.R!]#0H@
M("`@=&AI<R at I('L@<F5S970H*3L@?0T*("`@("`@("`-"B`@("!S=')I;F<@
M;F%M92 at I('L@<F5T=7)N("),+$Q,+$Q&(CL@?0T*("`@('-T<FEN9R!D97-C
M<FEP=&EO;B at I('L@<F5T=7)N("),249/.B!,;V-K($9R964@*'5S:6YG(&-A
M<RDL('5S:6YG(&$@;&EN:V5D(&QI<W0 at 87,@<W1O<F%G92XB.R!]#0H@("`@
M#0H@("`@#0H@("`@=F]I9"!P<F]D=6-E*&EN(%0@="D-"B`@("![#0H@("`@
M("!S:&%R960 at 875T;R!T;7`@/2!N97<@<VAA<F5D*$YO9&4I*'0I.R`@("`-
M"B`@("`@(&1O('L-"@ET;7`N;F5X="`](&QA<W0N;F5X=#L-"B`@("`@('T@
M=VAI;&4@*"%C87,H)FQA<W0N;F5X="QT;7`N;F5X="QT;7`I*3L-"B`@("!]
M(`T*("`@(`T*#0H@("`@8F]O;"!C;VYS=6UE*&]U="!4(')E<W5L="D@#0H@
M("`@>PT*("`@("`@<VAA<F5D($YO9&4@=&UP.PT*("`@("`@9&\@>PT*"71M
M<"`](&QA<W0N;F5X=#L-"@EI9B`H=&UP(&ES(&YU;&PI#0H)("!R971U<FX@
M9F%L<V4[#0H@("`@("!]('=H:6QE("@A8V%S*"9L87-T+FYE>'0L=&UP+'1M
M<"YN97AT*2D[#0H@("`@("`-"B`@("`@(')E<W5L="`]('1M<"YV86QU93L-
M"B`@("`@(')E='5R;B!T<G5E.R`@("`-"B`@("!]#0H@('T-"@T*#0H@(&-L
M87-S($Q)1D]?0G5F9F5R7TQO8VMI;F=?475E=64 at .B!1=65U90T*("![#0H@
M('!R:79A=&4Z#0H@("`@5"H at 8W5R<F5N=%\[#0H@("`@5%M=(&)U9F9E<E\[
M#0H@("`@:6YT('-T87)T:6YG7V)U9F9E<E]D97!T:%\[#0H@('!U8FQI8SH-
M"B`@("!S=')I;F<@;F%M92 at I('L@<F5T=7)N("),+$(L3&LB.R!]#0H@("`@
M<W1R:6YG(&1E<V-R:7!T:6]N*"D@>R!R971U<FX@(DQ)1D\Z($QO8VMI;F<L
M('5S:6YG(&$@9'EN86UI8V%L;'D@<F5S:7IA8FQE(&%R<F%Y(&%S('-T;W)A
M9V4N(CL@?0T*#0H@("`@=&AI<RAI;G0@<W1A<G1I;F=?8G5F9F5R7V1E<'1H
M/3$P,"D-"B`@("`@('L-"@ES=&%R=&EN9U]B=69F97)?9&5P=&A?(#T@<W1A
M<G1I;F=?8G5F9F5R7V1E<'1H.PT*"7)E<V5T*"D[#0H@("`@("!]#0H@("`@
M#0H@("`@=F]I9"!R97-E="@I('L-"B`@("`@(&)U9F9E<E\@/2!N97<@5%MS
M=&%R=&EN9U]B=69F97)?9&5P=&A?73L-"B`@("`@(&-U<G)E;G1?(#T@)F)U
M9F9E<E];,%T[#0H@("`@?0T*("`@(`T*("`@('YT:&ES*"D-"B`@("`@('L-
M"@ED96QE=&4 at 8G5F9F5R7SL-"B`@("`@('T-"@T*("`@#0H@("`@=F]I9"!P
M<F]D=6-E*&EN(%0@="D-"B`@("![#0H@("`@("!S>6YC:')O;FEZ960@*'1H
M:7,I('L-"@DJ*&-U<G)E;G1?*RLI(#T@=#L-"@T*"6EF("AC=7)R96YT7R`]
M/2`F8G5F9F5R7UMB=69F97)?+FQE;F=T:"TQ72D@>PT*"2`@:6YT(&P@/2!B
M=69F97)?+FQE;F=T:#L-"@D@(&)U9F9E<E\N;&5N9W1H(#T@;"`J(#([("\O
M(')E<VEZ90T*"2`@8W5R<F5N=%\@/2`F8G5F9F5R7UML+3%=.R`O+R!R97!O
M:6YT(&%T(&5N9"`-"@D@('!R:6YT9B at B8G5F9F5R(')E<VEZ960@=&\@)6E<
M;B(L8G5F9F5R7RYL96YG=&@I.PT*"7T-"B`@("`@('T@("`@("`@#0H@("`@
M?0T*("`@(`T*("`@(&)O;VP at 8V]N<W5M92AO=70 at 5"!R97-U;'0I(`T*("`@
M('L-"B`@("`@('-Y;F-H<F]N:7IE9"`H=&AI<RD@>R`@("`@#0H):68@*&-U
M<G)E;G1?("$]("9B=69F97)?6S!=*2!["2`@#0H)("`@(')E<W5L="`]("HH
M+2UC=7)R96YT7RD[#0H)("`@(')E='5R;B!T<G5E.PT*"7T-"@ER971U<FX@
M9F%L<V4[#0H@("`@("!]#0H@("`@?0T*("!]#0H-"B`@8VQA<W, at 1DE&3U]-
M97-S86=E7U!A<W-I;F=?475E=64 at .B!-97-S86=E7U!A<W-I;F=?475E=64@
M#0H@('L-"B`@<')I=F%T93H-"B`@("!4:60 at 8V]N<W5M97)?=&ED7SL-"B`@
M<'5B;&EC. at T*("`@(`T*("`@('-T<FEN9R!N86UE*"D@>R!R971U<FX@(D8L
M35`B.R!]#0H@("`@<W1R:6YG(&1E<V-R:7!T:6]N*"D@>R!R971U<FX@(D9)
M1D\Z($UE<W-A9V4 at 4&%S<VEN9R([('T-"B`@("!4:60 at 8V]N<W5M97)?5&ED
M*"D@>R!R971U<FX at 8V]N<W5M97)?=&ED7SL@?0T*("`@('9O:60@<V5T7V-O
M;G-U;65R7U1I9"A4:60@="D@>R`-"B`@("`@(&1E8G5G*#$I('L@<')I;G1F
M*")-4#H at 8V]N<W5M97(@5&ED('-E="!O;B!Q=65U92Y<;B(I.R!]#0H@("`@
M("!C;VYS=6UE<E]T:61?(#T@=#L-"B`@("!](`T*#0H@("`@=&AI<R at I('M]
M(`T*("`@('9O:60@<F5S970H*2![?0T*#0H@("`@=F]I9"!P<F]D=6-E*&EN
M(%0@="D@>PT*("`@("`@<V5N9"AC;VYS=6UE<E]T:61?+'0I.PT*("`@('T-
M"B`@("`-"B`@("!B;V]L(&-O;G-U;64H;W5T(%0@<F5S=6QT*2![#0H@("`@
M("!R96-E:79E*"A4('0I('L@<F5S=6QT(#T@=#L@?2D[#0H@("`@("!R971U
?<FX@=')U93L-"B`@("!]#0H@('T-"@T*?0T*#0H-"@``
`
end
begin 644 Queue_Test_ThreadObjects.d
M:6UP;W)T('-T9"YC+G-T9&EO.PII;7!O<G0 at 8V]R92YT:')E860["FEM<&]R
M="!S=&0N9&%T971I;64["FEM<&]R="!S=&0N<F%N9&]M.PII;7!O<G0@<W1D
M+FUA=&@["FEM<&]R="!S=&0N86QG;W)I=&AM.PII;7!O<G0@<W1D+F9O<FUA
M=#L*:6UP;W)T('-T9"YR86YG93L*:6UP;W)T('-T9"YC;VYC=7)R96YC>3L*
M:6UP;W)T('-T9"YT<F%I=',["FEM<&]R="!S=&0N8V]N8W5R<F5N8WD["@H*
M:6UP;W)T(%%U975E.PH*=&5M<&QA=&4 at 475E=65?5&5S=%]4>7!E<RA4*2`*
M>PH@('-T<G5C="!$871A7U!A8VME="`*("!["B`@("!4:6-K<R!P5&EM93L*
M("`@(&)O;VP@;&%S="`](&9A;'-E.PH@("`@5"!D=6UM>3L*("!]"@H@(&%L
M:6%S(%%U975E7U1Y<&5S(2A$871A7U!A8VME="D at 450["@H@('1E;7!L871E
M(%%U975E7U5S92`H42D@"B`@>PH@("`@=F]I9"!S96YD7W1O*%$@<2P@:6X@
M1&%T85]086-K970 at 9"D@>R!Q+G!R;V1U8V4H9"D[('T*("`@(&)O;VP@<F5C
M96EV95]F<F]M*%$@<2P@;W5T($1A=&%?4&%C:V5T(')E<W5L="D@>R!R971U
M<FX@<2YC;VYS=6UE*&0I.R!]"B`@?0H*("!C;&%S<R!0<F]D=6-E<CH at 5&AR
M96%D"B`@>PH@("`@=&AI<RA15"Y1=65U92!Q+"!286YD;VT@<BP@:6YT('!A
M8VME=',L(&EN="!P86-K971S7W!E<E]S+"!I;G0@=7-?=F%R:6%B:6QI='DI
M(`H@("`@>PH@("`@("!17R`]('$["B`@("`@(')?(#T@<CL*("`@("`@<&%C
M:V5T<U\@/2!P86-K971S.PH@("`@("!P86-K971?<W!A8VEN9U\@/2`Q,#`P
M,#`P,"]P86-K971S7W!E<E]S.R`O+W5N:71S(&%R92`Q,#!N<R`*("`@("`@
M+R\@;6%K92!S=7)E('=E(&-A;B=T(&AA=F4 at +71V92!S;&5E<`H@("`@("!P
M86-K971?=F%R:6%B:6QI='E?(#T@;6EN*#$P*G5S7W9A<FEA8FEL:71Y+'!A
M8VME=%]S<&%C:6YG7RD["B`@("`@('-U<&5R*"9R=6XI.R`@"B`@("!]"B`@
M<')I=F%T93H*("`@(&EN="!P86-K971S7SL*("`@(&EN="!P86-K971?<W!A
M8VEN9U\["B`@("!I;G0@<&%C:V5T7W9A<FEA8FEL:71Y7SL*("`@(%%4+E%U
M975E(%%?.PH@("`@4F%N9&]M(')?.PH@("`@"B`@("!V;VED(')U;B at I(`H@
M("`@>PH@("`@("!D96)U9R at Q*2![('!R:6YT9B at B:6X@<')O9'5C92 at I7&XB
M*3L@?0H@("`@("!I;G0 at 8V]U;G1E<B`](#`["B`@("`@('=H:6QE("AC;W5N
M=&5R*RL@/"!P86-K971S7RD@('L*"41A=&%?4&%C:V5T(&1A=&$["@ED871A
M+G!4:6UE(#T@<WES=&EM92 at I.PH)9&5B=6<@*#4I('L@<')I;G1F*")396YD
M:6YG('0])6E<;B(L9&%T82YP5&EM92YV86QU92D[('T*"5%?+G!R;V1U8V4H
M9&%T82D["@ET:&ES+G-L965P*'!A8VME=%]S<&%C:6YG7RMU;FEF;W)M*"UP
M86-K971?=F%R:6%B:6QI='E?+'!A8VME=%]V87)I86)I;&ET>5\L<E\I*3L*
M("`@("`@?0H@("`@?0H@('T*"B`@<W1R=6-T(%!R;V1U8V5R7TU07T1O;F4@
M>WT["B`@"B`@=F]I9"!P<F]D=6-E7VUP*&EN="!P86-K971S+"!I;G0@<&%C
M:V5T<U]P97)?<RP at 4F%N9&]M('(L(&EN="!U<U]V87)I86)I;&ET>2P at 5&ED
M(&-4:60L(%1I9"!M5&ED*2`*("!["B`@("!D96)U9R at Q*2![('!R:6YT9B at B
M:6X@<')O9'5C95]M<"@I7&XB*3L@?0H@("`@:6YT(&-O=6YT97(@/2`P.PH@
M("`@8V]N<W0@:6YT('!A8VME=%]S<&%C:6YG(#T@,3`P,#`P,#`O<&%C:V5T
M<U]P97)?<SL at +R]U;FET<R!A<F4@,3`P;G,@"B`@("!C;VYS="!I;G0@<&%C
M:V5T7W9A<FEA8FEL:71Y(#T@;6EN*#$P*G5S7W9A<FEA8FEL:71Y+'!A8VME
M=%]S<&%C:6YG*3L*("`@('=H:6QE("AC;W5N=&5R*RL@/"!P86-K971S*2`@
M>PH)1&%T85]086-K970 at 9&%T83L*"61A=&$N<%1I;64@/2!S>7-T:6UE*"D[
M"@ED96)U9R`H-2D@>R!P<FEN=&8H(E-E;F1I;F<@=#TE:5QN(BQD871A+G!4
M:6UE+G9A;'5E*3L@?0H)<V5N9"AC5&ED+&1A=&$I.PH)5&AR96%D+G-L965P
M*'!A8VME=%]S<&%C:6YG*W5N:69O<FTH+7!A8VME=%]V87)I86)I;&ET>2QP
M86-K971?=F%R:6%B:6QI='DL<BDI.PH@("`@?0H@("`@4')O9'5C97)?35!?
M1&]N92!P9#L*("`@('-E;F0H;51I9"QP9"D["B`@("!D96)U9R at Q*2![('!R
M:6YT9B at B96YD('!R;V1U8V5?;7`H*5QN(BD[('T*("!]"@H@("`*("!15"Y-
M97-S86=E7U!A<W-I;F=?475E=64@;7!?<75E=64H450N475E=64@<2D@>PH@
M("`@450N365S<V%G95]087-S:6YG7U%U975E(&UP<2`](&-A<W0H450N365S
M<V%G95]087-S:6YG7U%U975E*7$["B`@("!R971U<FX@;7!Q.PH@('T*("`*
M("!C;&%S<R!#;VYS=6UE<B`Z(%1H<F5A9`H@('L*("`@('1H:7,H450N475E
M=64@<2QI;G0@=&]T86Q?97AP96-T961?<&%C:V5T<RD@"B`@("`@('L*"5%?
M(#T@<3L*"65X<&5C=&5D7W!A8VME='-?(#T@=&]T86Q?97AP96-T961?<&%C
M:V5T<SL*"61E;&%Y<U\N;&5N9W1H(#T@=&]T86Q?97AP96-T961?<&%C:V5T
M<SL*"7-U<&5R*"9R=6XI.PH@("`@("!]"B`@("!B;V]L('-T;W`@/2!F86QS
M93L*("!P<FEV871E. at H@("`@450N475E=64 at 45\["B`@("!L;VYG6UT at 9&5L
M87ES7SL*("`@(&EN="!E>'!E8W1E9%]P86-K971S7SL*"B`@("!V;VED(')U
M;B at I(`H@("`@>PH@("`@("!D96)U9R at Q*2![('!R:6YT9B at B:6X at 8V]N<W5M
M92 at I7&XB*3L@?0H@("`@("!I;G0@<&%C:V5T7VYU;6)E<B`](#`["B`@("`@
M($1A=&%?4&%C:V5T(&1A=&$["B`@("`@('=H:6QE("AP86-K971?;G5M8F5R
M(#P at 97AP96-T961?<&%C:V5T<U\I('L*"6EF("A17RYC;VYS=6UE*&1A=&$I
M*2!["@D@(&1E;&%Y<U];<&%C:V5T7VYU;6)E<BLK72`]('!A8VME=%]D96QA
M>2AD871A*3L*"7T*("`@("`@?0H@("`@("!D96)U9R at Q*2![('!R:6YT9B at B
M96YD(&-O;G-U;64H*5QN(BD[('T*("`@('T*"B`@<'5B;&EC. at H@("`@;&]N
M9UM=(&1E;&%Y<R at I('L@<F5T=7)N(&1E;&%Y<U\[('T*("!]"@H@(&QO;F<@
M<&%C:V5T7V1E;&%Y*$1A=&%?4&%C:V5T(&1A=&$I(`H@('L*("`@(&1E8G5G
M("@U*2![('!R:6YT9B at B4F5C)V0@=#TE:5QN(BQD871A+G!4:6UE+G9A;'5E
M*3L@?0H@("`@5&EC:W, at 8U1I;64["B`@("!C5&EM92`]('-Y<W1I;64H*3L@
M"B`@("!D96)U9R`H-2D@>R!P<FEN=&8H(E)E8R=D(&%T('0])6E<;B(L8U1I
M;64N=F%L=64I.R!]"B`@("!4:6-K<R!E;&%P<V5D(#T at 8U1I;64 at +2!D871A
M+G!4:6UE.PH@("`@;&]N9R!E;&%P<V5D7W5S(#T at 96QA<'-E9"YT;TUI8W)O
M<V5C;VYD<R$H;&]N9RDH*3L*("`@(')E='5R;B!E;&%P<V5D7W5S.PH@("`@
M9&5B=6<@*#4I('L@<')I;G1F*")U<STE:5QN(BQE;&%P<V5D7W5S*3L@?0H@
M('T*"B`@<W1R=6-T($-O;G-U;65?35!?1&]N92![?3L*"B`@=F]I9"!C;VYS
M=6UE7VUP*&EN="!N=6U?<&%C:V5T<RP at 5&ED(&U4:60L('-H87)E9"!L;VYG
M6UT@<V1E;&%Y<RD@"B`@>PH@("`@9&5B=6<H,2D@>R!P<FEN=&8H(FEN(&-O
M;G-U;65?;7`H*5QN(BD[('T*("`@(&EN="!P86-K971?;G5M8F5R(#T@,#L*
M("`@('=H:6QE("AP86-K971?;G5M8F5R(#P@;G5M7W!A8VME=',I"B`@("`@
M(')E8V5I=F4H*$1A=&%?4&%C:V5T(&0I('MS9&5L87ES6W!A8VME=%]N=6UB
M97(K*UT@/2!P86-K971?9&5L87DH9"D[('TI.PH@("`@"B`@("!#;VYS=6UE
M7TU07T1O;F4 at 8V0["B`@("!S96YD*&U4:60L8V0I.PH@("`@9&5B=6<H,2D@
M>R!P<FEN=&8H(F5N9"!C;VYS=6UE7VUP*"E<;B(I.R!]"B`@?0H@(`H@(&-L
M87-S(%%U975E7U1E<W0@>PH@("`@:6UM=71A8FQE('-T<FEN9R!497-T7TEN
M9F]?2&5A9&5R(#T@(E!R;V1S7'1P:W1S7%QP<F]D7'1P:W1S7%QS7'1J:71T
M97(B.PH@("`@:6UM=71A8FQE('-T<FEN9R!2=6Y?26YF;U](96%D97(@/2`B
M475E=65<="!4;W0@<UQT(&%V9UQT("!S9%QT;6EN7'0@;6%X7'0\;6EN/EQT
M(#QM87@^7&Y?7U]?7U]<=%]?7U]?7UQT7U]?7U]<=%]?7U]?7'1?7U]<=%]?
M7U]?7'1?7U]?7UQT7U]?7U]?7R(["@H@("`@+R]S=&%T:6,@<W1R:6YG(%1E
M<W1?26YF;U](96%D97(H*2![(')E='5R;B!I;6UU=&%B;&4@<W1R:6YG*")0
M<F]D<UQT<&MT<UQ<<')O9%QT<&MT<UQ<<UQT:FET=&5R(BD[('T*("`@("\O
M<W1A=&EC('-T<FEN9R!2=6Y?26YF;U](96%D97(H*2![(')E='5R;B!I;6UU
M=&%B;&4@<W1R:6YG*")1=65U95QT5&]T('-<=%1O="!P:W1S7'1A=F=<='-D
M7'1M:6Y<=&UA>%QT/&UI;CY<=#QM87@^(CL@?0H@("`@"B`@<')I=F%T93H*
M("`@(`H@("`@+R\@9F]R('1E<W0@:6YP=71S"B`@("!I;G0@;G5M7W!R;V1U
M8V5R<U\L('!A8VME='-?<&5R7W!R;V1U8V5R7RP at 879G7W!A8VME='-?<&5R
M7W-?+"!M:6-R;W-E8V]N9%]V87)I86)I;&ET>5\["B`@("`*("`@("\O(&9O
M<B!T97-T(&]U='!U=',*("`@(&QO;F<@;6%X:6UU;5\L;6EN:6UU;5\L3E\[
M"B`@("!D;W5B;&4 at 879G7RP@<W1D7V1E=E\L(&%V9U]M:6Y?+"!A=F=?;6%X
M7RP@<G5N7W-?.PH@("`@<W1R:6YG('%?;F%M95\["B`@("`*("!P=6)L:6,Z
M"B`@("!T:&ES*&EN="!N=6U?<')O9'5C97)S+"!I;G0@<&%C:V5T<U]P97)?
M<')O9'5C97(L(&EN="!A=F=?<&%C:V5T<U]P97)?<RP@:6YT(&UI8W)O<V5C
M;VYD7W9A<FEA8FEL:71Y*2`*("`@('L*("`@("`@;G5M7W!R;V1U8V5R<U\@
M/2!N=6U?<')O9'5C97)S.PH@("`@("!P86-K971S7W!E<E]P<F]D=6-E<E\@
M/2!P86-K971S7W!E<E]P<F]D=6-E<CL*("`@("`@879G7W!A8VME='-?<&5R
M7W-?(#T at 879G7W!A8VME='-?<&5R7W,["B`@("`@(&UI8W)O<V5C;VYD7W9A
M<FEA8FEL:71Y7R`](&UI8W)O<V5C;VYD7W9A<FEA8FEL:71Y.PH@("`@?0H@
M("`@"B`@("!S=')I;F<@5&5S=%]);F9O*"D@>R`*("`@("`@875T;R!W<FET
M97(@/2!A<'!E;F1E<B%S=')I;F<H*3L)("`@(`H@("`@("!F;W)M871T9617
M<FET92AW<FET97(L(B5S('!R;V1U8V5R*',I(&5A8V@@<')O9'5C:6YG("5S
M('!A8VME=', at 870@)7,@<&MT<R]S("AT;W1A;"D@=VET:"`E<R!U<R!J:71T
M97(Z(BQN=6U?<')O9'5C97)S7RQP86-K971S7W!E<E]P<F]D=6-E<E\L879G
M7W!A8VME='-?<&5R7W-?+&UI8W)O<V5C;VYD7W9A<FEA8FEL:71Y7RD["B`@
M("`@(')E='5R;B!W<FET97(N9&%T83L*("`@('T*("`@(`H@("`@"B`@("!S
M=')I;F<@4G5N7TEN9F\H*2!["B`@("`@(&%U=&\@=W)I=&5R(#T at 87!P96YD
M97(A<W1R:6YG*"D["B`@("`@(&9O<FUA='1E9%=R:71E*'=R:71E<BPB)7-<
M="4V+C)F7'0E-2XR9EQT)34N,F9<="4R<R(L<5]N86UE7RQR=6Y?<U\L879G
M7RQS=&1?9&5V7RQM:6YI;75M7RD["B`@("`@(&9O<FUA='1E9%=R:71E*'=R
M:71E<BPB7'0E-7,B+"!M87AI;75M7RD["B`@("`@(&9O<FUA='1E9%=R:71E
M*'=R:71E<BPB7'0E-2XR9B(L879G7VUI;E\I.PH@("`@("!F;W)M871T9617
M<FET92AW<FET97(L(EQT)3<N,F8B+&%V9U]M87A?*3L*("`@("`@<F5T=7)N
M('=R:71E<BYD871A.PH@("`@?0H@("`*"B`@("!V;VED(')U;BA15"Y1=65U
M92!Q*0H@("`@>PH@("`@("!Q7VYA;65?(#T@<2YN86UE.PH@("`@("!Q+G)E
M<V5T*"D["B`@("`@("\O(&-R96%T92!A('!R;V1U8V5R('1H<F5A9"!A;F0@
M82!C;VYS=6UE<B!T:')E860*("`@("`@4F%N9&]M(&=E;CL*("`@("`@8V]N
M<W0@:6YT(&YU;6)E<E]P86-K971S(#T@;G5M7W!R;V1U8V5R<U\J<&%C:V5T
M<U]P97)?<')O9'5C97)?.PH@("`@("!4:60@;51I9"`]('1H:7-4:60H*3L*
M"@H@("`@("!15"Y-97-S86=E7U!A<W-I;F=?475E=64@;7!Q(#T@;7!?<75E
M=64H<2D["B`@("`@($-O;G-U;65R(&-O;G-U;65R.PH@("`@("!S:&%R960@
M;&]N9UM=('-D96QA>7,["B`@("`@(%1I9"!C5&ED.PH@("`@("!S9&5L87ES
M+FQE;F=T:"`](&YU;6)E<E]P86-K971S.PH@("`@("!I9B`H;7!Q("%I<R!N
M=6QL*2!["@ED96)U9R at Q*2![('!R:6YT9B at B4W!A=VYI;F<@8V]N<W5M97(@
M=&AR96%D+EQN(BD[('T*"6-4:60@/2!S<&%W;B at F8V]N<W5M95]M<"QN=6UB
M97)?<&%C:V5T<RQM5&ED+'-D96QA>7,I.PH);7!Q+G-E=%]C;VYS=6UE<E]4
M:60H8U1I9"D["@ED96)U9R at Q*2![('!R:6YT9B at B8V]N<W5M97(@=&AR96%D
M('-P87=N960N7&XB*3L@?0H@("`@("!]"B`@("`@(&5L<V4@>PH)9&5B=6<H
M,2D@>R!P<FEN=&8H(E-T87)T:6YG(&-O;G-U;65R('1H<F5A9"Y<;B(I.R!]
M"@EC;VYS=6UE<B`](&YE=R!#;VYS=6UE<BAQ+&YU;6)E<E]P86-K971S*3L@
M+R\@;VYE(&-O;G-U;65R(`H)8V]N<W5M97(N<W1A<G0H*3L@"@ED96)U9R at Q
M*2![('!R:6YT9B at B8V]N<W5M97(@<W1A<G1E9"XB*3L@?0H@("`@("!]"B`@
M("`@("`@"@H@("`@("!C;VYS="!I;G0@<'!S(#T at 879G7W!A8VME='-?<&5R
M7W-?+VYU;5]P<F]D=6-E<G-?.PH@("`@("!4:6-K<R!S5&EM92`]('-Y<W1I
M;64H*3L*("`@("`@:68@*&UP<2`A:7,@;G5L;"D@>PH)9F]R("AI;G0@:STP
M.R!K/&YU;5]P<F]D=6-E<G-?.R`K*VLI('L*"2`@9&5B=6<H,2D@>R!P<FEN
M=&8H(G-P87=N:6YG('!R;V1U8V5R+EQN(BD[('T*"2`@<W!A=VXH)G!R;V1U
M8V5?;7`L<&%C:V5T<U]P97)?<')O9'5C97)?+'!P<RQG96XL;6EC<F]S96-O
M;F1?=F%R:6%B:6QI='E?+&-4:60L;51I9"D["@D@(&1E8G5G*#$I('L@<')I
M;G1F*")S<&%W;F5D('!R;V1U8V5R+EQN(BD[('T*"7T*"61E8G5G*#$I('L@
M<')I;G1F*")786ET:6YG(&9O<B!P<F]D=6-E<G,@=&\@<VEG;F%L(&1O;F4N
M7&XB*3L@?0H)9F]R("AI;G0@:STP.R!K/&YU;5]P<F]D=6-E<G-?.R`K*VLI
M('L*"2`@<F5C96EV92 at H4')O9'5C97)?35!?1&]N92!P9"D@>WTI.PH)?0H)
M9&5B=6<H,2D@>R!P<FEN=&8H(F%L;"!P<F]D=6-E<G,@<VEG;F%L960N7&XB
M*3L@?0H@("`@("!]"B`@("`@(&5L<V4@>PH)5&AR96%D1W)O=7`@<')O9'5C
M97)4:')E861S(#T@;F5W(%1H<F5A9$=R;W5P*"D["@EF;W(@*&EN="!K/3`[
M(&L\;G5M7W!R;V1U8V5R<U\[("LK:RD@>PH)("!A=71O('!R;V1U8V5R(#T@
M;F5W(%!R;V1U8V5R*'$L9V5N+'!A8VME='-?<&5R7W!R;V1U8V5R7RQP<',L
M;6EC<F]S96-O;F1?=F%R:6%B:6QI='E?*3L*"2`@9&5B=6<H,2D@>R!P<FEN
M=&8H(G-T87)T:6YG('!R;V1U8V5R+EQN(BD[('T*"2`@<')O9'5C97(N<W1A
M<G0H*3L*"2`@9&5B=6<H,2D@>R!P<FEN=&8H(G!R;V1U8V5R('-T87)T960N
M7&XB*3L@?0H)("!P<F]D=6-E<E1H<F5A9',N861D*'!R;V1U8V5R*3L*"7T*
M"61E8G5G*#$I('L@<')I;G1F*")786ET:6YG(&9O<B!P<F]D=6-E<G,N7&XB
M*3L@?0H)<')O9'5C97)4:')E861S+FIO:6Y!;&PH*3L@(`H)9&5B=6<H,2D@
M>R!P<FEN=&8H(G!R;V1U8V5R<R!F:6YI<VAE9"Y<;B(I.R!]"B`@("`@('T*
M("`@("`@"B`@("`@(&EF("AM<'$@(6ES(&YU;&PI('L@"@ED96)U9R at Q*2![
M('!R:6YT9B at B5V%I=&EN9R!F;W(@*'-P87=N960I(&-O;G-U;65R('1H<F5A
M9"Y<;B(I.R!]"@ER96-E:79E*"A#;VYS=6UE7TU07T1O;F4 at 8V0I('M]*3L*
M"61E8G5G*#$I('L@<')I;G1F*")S<&%W;F5D(&-O;G-U;65R('1H<F5A9"!S
M:6=N86QE9"Y<;B(I.R!]"B`@("`@('T*("`@("`@96QS92!["@ED96)U9R at Q
M*2![('!R:6YT9B at B5V%I=&EN9R!F;W(@8V]N<W5M97(@=&AR96%D+EQN(BD[
M('T*"6-O;G-U;65R+G-T;W`@/2!T<G5E.PH)8V]N<W5M97(N:F]I;B at I.R`O
M+R!M86ME('-U<F4@:70 at 9FEN:7-H97,*"61E8G5G*#$I('L@<')I;G1F*")C
M;VYS=6UE<B!F:6YI<VAE9"Y<;B(I.R!]"B`@("`@('T*"@H@("`@("!4:6-K
M<R!E5&EM92`]('-Y<W1I;64H*3L*("`@("`@<G5N7W-?(#T@*&54:6UE+7-4
M:6UE*2YT;U-E8V]N9',A9&]U8FQE*"D["B`@("`@(`H@("`@("!L;VYG6UT@
M9&5L87ES.PH@("`@("!I9B`H;7!Q("%I<R!N=6QL*2`*"61E;&%Y<R`](&-A
M<W0H;&]N9UM=*7-D96QA>7,["B`@("`@(&5L<V4*"61E;&%Y<R`](&-O;G-U
M;65R+F1E;&%Y<R at I.PH@("`@("`*"B`@("`@($Y?(#T at 9&5L87ES+FQE;F=T
M:#L@"B`@("`@(`H@("`@("`*("`@("`@"B`@("`@('-O<G0H9&5L87ES*3L*
M("`@("`@;6%X:6UU;5\@/2!D96QA>7-;9&5L87ES+FQE;F=T:"TQ73L*("`@
M("`@;6EN:6UU;5\@/2!D96QA>7-;,%T["B`@("`@(`H@("`@("!A=71O('-U
M;2`](')E9'5C92$H(F$K8B(I*&-A<W0H;&]N9RDP+&1E;&%Y<RD["B`@("`@
M(`H@("`@("!A=F=?(#T at 8V%S="AD;W5B;&4I<W5M+TY?.PH@("`@("`*("`@
M("`@;&]N9R!F*&QO;F<@82P@;&]N9R!B*2![(`H)9&]U8FQE('$R(#T@*&(M
M879G7RDJ*&(M879G7RD["@ER971U<FX at 82MC87-T*&QO;F<I<3([(`H@("`@
M("!]"B`@("`@(&%U=&\@<V0@/2!R961U8V4A*&8I*&-A<W0H;&]N9RDP+&1E
M;&%Y<RD["B`@("`@(`H@("`@("!S=&1?9&5V7R`]('-Q<G0H8V%S="AD;W5B
M;&4I<V0O3E\I.PH@("`@("`*("`@("`@:6YT('!C="`](&UA>"AD96QA>7,N
M;&5N9W1H+S$P,"PQ*3L*("`@("`@;&]N9UM=('-M86QL97-T(#T at 9&5L87ES
M6S`@+BX@<&-T73L*("`@("`@;&]N9UM=(&QA<F=E<W0@/2!D96QA>7-;*&1E
M;&%Y<RYL96YG=&@M<&-T*2`N+B!D96QA>7,N;&5N9W1H73L*("`@("`@879G
M7VUI;E\@/2!R961U8V4A*")A*V(B*2 at P+C`L<VUA;&QE<W0I+W!C=#L*("`@
M("`@879G7VUA>%\@/2!R961U8V4A*")A*V(B*2 at P+C`L;&%R9V5S="DO<&-T
M.PH@("`@("`*("`@('T*("!]"GT*"F%L:6%S(%%U975E7U1E<W1?5'EP97,A
M*&)O;VPI(%%45#L*"G9O:60@;6%I;B at I(`I["B`@<V5T8G5F*'-T9&]U="QN
M=6QL*3L*("!P<FEN=&8H(EQN06QL('1I;65S(&EN(&UI8W)O<V5C;VYD<R!U
M;FQE<W,@;W1H97)W:7-E('-P96-I9FEE9"Y<;B(I.PH@('!R:6YT9B at B7&X\
M;6EN/B!A;F0@/&UA>#X at 87)E(&%V97)A9V5S(&]V97(@9F%S=&5S="!A;F0@
M<VQO=V5S="`Q)24@<F5S<&5C=&EV96QY+EQN7&XB*3L*(`H@(%%45"Y15"Y1
M=65U95M=('%U975E<SL*("!Q=65U97,@?CT@;F5W(%%45"Y15"Y,249/7T)U
M9F9E<E],;V-K:6YG7U%U975E*#$P,"D["B`@<75E=65S('X](&YE=R!15%0N
M450N3$E&3U],:6YK961,:7-T7TQO8VMI;F=?475E=64H*3L@"B`@<75E=65S
M('X](&YE=R!15%0N450N1DE&3U],:6YK961,:7-T7TQO8VMI;F=?475E=64H
M*3L@"B`@<75E=65S('X](&YE=R!15%0N450N3$E&3U],:6YK961,:7-T7TQO
M8VM&<F5E7U%U975E*"D["B`@"B`@<75E=65S('X](&YE=R!15%0N450N1DE&
M3U],:6YK961,:7-T7TQO8VM&<F5E7U%U975E*"D["B`@<75E=65S('X](&YE
M=R!15%0N450N1DE&3U]-97-S86=E7U!A<W-I;F=?475E=64H*3L*"B`@9F]R
M96%C:"`H43L@<75E=65S*0H@("`@<')I;G1F*"(E+BIS(#T@)2XJ<UQN(BQ1
M+FYA;64L42YD97-C<FEP=&EO;BD["B`@"B`@<')I;G1F*")<;B(I.PH*("!1
M5%0N475E=65?5&5S=%M=('1E<W1S.PH@(`H@('1E<W1S('X](&YE=R!15%0N
M475E=65?5&5S="@Q+#$P+#$P+#$I.PH@('1E<W1S('X](&YE=R!15%0N475E
M=65?5&5S="@T+#$P+#$P+#$I.PH@('1E<W1S('X](&YE=R!15%0N475E=65?
M5&5S="@T+#$P,"PQ,#`L,2D["B`@=&5S=',@?CT@;F5W(%%45"Y1=65U95]4
M97-T*#$L,3`P,"PQ,#`P+#$P,"D["B`@=&5S=',@?CT@;F5W(%%45"Y1=65U
M95]497-T*#0L,3`P,"PQ,#`P+#$P,"D["B`@=&5S=',@?CT@;F5W(%%45"Y1
M=65U95]497-T*#0L-#`P,"PR,#`P+#$P,"D["B`@=&5S=',@?CT@;F5W(%%4
M5"Y1=65U95]497-T*#0L-#`P,"PR,#`P+#$P,#`I.PH@('1E<W1S('X](&YE
M=R!15%0N475E=65?5&5S="@T+#4P,#`P+#4P,#`L,3`P*3L*("!T97-T<R!^
M/2!N97<@4514+E%U975E7U1E<W0H-"PU,#`P,#`L-3`P,#`L,2D["B`@=&5S
M=',@?CT@;F5W(%%45"Y1=65U95]497-T*#0L-3`P,#`P+#4P,#`P+#$P,"D[
M"B`@"@H@(&9O<F5A8V at H=#L@=&5S=',I('L*("`@('!R:6YT9B at B)2XJ<UQN
M7&XE+BIS7&XB+'0N5&5S=%]);F9O+'0N4G5N7TEN9F]?2&5A9&5R*3L*("`@
M(&9O<F5A8V@@*%$[('%U975E<RD@>PH@("`@("!T+G)U;BA1*3L*("`@("`@
M<')I;G1F*"(E+BIS7&XB+'0N4G5N7TEN9F\I.PH@("`@?0H@("`@<')I;G1F
2*")<;B(I.PH@('T*"GT*"@H*
`
end


More information about the Digitalmars-d mailing list