Boost logo

Boost Users :

From: Terry G (tjgolubi_at_[hidden])
Date: 2006-11-15 12:55:25


"Memfis" wrote:
> What is the best practice for using boost::signal? Should the signal be
> a public field? Should an accessor method be used?

I hardly know what "best practises" to use.
I submitted something recently for comments. It tries to be somewhat
thread-safe.
See [Boost.Signals] in Multithreaded Environment, submitted on Nov 11.
(I don't know how to put a link here, sorry).

terry

begin 666 [Boost.Signals] in Multithreaded Environment.nws
M4&%T:#H@;F5W<RYG;6%N92YO<F<A;F]T+69O<BUM86EL#0I&<F]M.B B5&5R
M<GD_at_1R(@/'1J9V]L=6)I0&YE=&EN<RYN970^#0I.97=S9W)O=7!S.B!G;6%N
M92YC;VUP+FQI8BYB;V]S="YU<V5R#0I3=6)J96-T.B!;0F]O<W0N4VEG;F%L
M<UT@:6X_at_375L=&ET:')E861E9"!%;G9I<F]N;65N= T*1&%T93H_at_4V%T+" Q
M,2!.;W8@,C P-B Q,SHT.3HR,2 M,#8P, T*3&EN97,Z(#<Y#0I!<'!R;W9E
M9#H@;F5W<T!G;6%N92YO<F<-"DUE<W-A9V4M240Z(#QE:C4Y9S$D9FIU)#%
M<V5A+F=M86YE+F]R9SX-"E)E<&QY+51O.B!B;V]S="UU<V5R<T!L:7-T<RYB
M;V]S="YO<F<-"DY.5% M4&]S=&EN9RU(;W-T.B!M86EN+F=M86YE+F]R9PT*
M36EM92U697)S:6]N.B Q+C -"D-O;G1E;G0M5'EP93H@=&5X="]P;&%I;CL@
M8VAA<G-E=#TB=7,M87-C:6DB#0I#;VYT96YT+51R86YS9F5R+45N8V]D:6YG
M.B W8FET#0I8+51R86-E.B!S96$N9VUA;F4N;W)G(#$Q-C,R-S0W,3@@,38T
M-C @.# N.3$N,C(Y+C(@*#$Q($YO=B R,# V(#$Y.C4Q.C4X($=-5"D-"E_at_M
M0V]M<&QA:6YT<RU4;SH@=7-E;F5T0'-E82YG;6%N92YO<F<-"DY.5% M4&]S
M=&EN9RU$871E.B!3870L(#$Q($YO=B R,# V(#$Y.C4Q.C4X("LP,# P("A5
M5$,I#0I/<FEG:6YA;"U8+49R;VTZ(&)O;W-T+75S97)S+6)O=6YC97- ;&ES
M=',N8F]O<W0N;W)G(%-A="!.;W8@,3$@,C Z-3$Z-3@@,C P-_at_T*4F5T=7)N
M+7!A=&@Z(#QB;V]S="UU<V5R<RUB;W5N8V5S0&QI<W1S+F)O;W-T+F]R9SX-
M"D5N=F5L;W!E+71O.B!Y9RUB;V]S="UU<V5R<T!M+F=M86YE+F]R9PT*3W)I
M9VEN86PM4F5C96EV960Z(&9R;VT@=V]W8F%G9V5R+F]S;"YI=2YE9'4@*%LQ
M,CDN-SDN,C0U+C(U,ETI#0H)8GD_at_8VEA;RYG;6%N92YO<F<@=VET:"!E<VUT
M<" H17AI;2 T+C0S*0T*"6ED(#%':7ET4BTP,# Q,C8M1E,-"@EF;W(@>6<M
M8F]O<W0M=7-E<G- ;2YG;6%N92YO<F<[(%-A="P@,3$@3F]V(#(P,#8@,C Z
M-3$Z-3<@*S Q,# -"D]R:6=I;F%L+5)E8V5I=F5D.B!F<F]M('=O=V)A9V=E
M<BYO<VPN:74N961U("AL;V-A;&AO<W0_at_6S$R-RXP+C N,5TI#0H)8GD@=V]W
M8F%G9V5R+F]S;"YI=2YE9'4@*%!O<W1F:7_at_I('=I=&@@15--5% @:60_at_1#8T
M-40Q,#4V,T$[#0H)4V%T+" Q,2!.;W8@,C P-B Q-#HU,3HU-2 M,#4P," H
M15-4*0T*6"U/<FEG:6YA;"U4;SH_at_8F]O<W0M=7-E<G- ;&ES=',N8F]O<W0N
M;W)G#0I$96QI=F5R960M5&\Z(&)O;W-T+75S97)S0&QI<W1S+F)O;W-T+F]R
M9PT*3W)I9VEN86PM4F5C96EV960Z(&9R;VT_at_8VEA;RYG;6%N92YO<F<@*&UA
M:6XN9VUA;F4N;W)G(%LX,"XY,2XR,CDN,ETI#0H)8GD@=V]W8F%G9V5R+F]S
M;"YI=2YE9'4@*%!O<W1F:7_at_I('=I=&@@15--5% @:60_at_0C)&,S(Q,#4U1# -
M"@EF;W(@/&)O;W-T+75S97)S0&QI<W1S+F)O;W-T+F]R9SX[(%-A="P@,3$@
M3F]V(#(P,#8@,30Z-#DZ,S<@+3 U,# @*$535"D-"D]R:6=I;F%L+5)E8V5I
M=F5D.B!F<F]M(&QI<W0_at_8GD@8VEA;RYG;6%N92YO<F<@=VET:"!L;V-A;" H
M17AI;2 T+C0S*0T*"6ED(#%':7ER-BTP,# P9&HM2&<-"@EF;W(@8F]O<W0M
M=7-E<G- ;&ES=',N8F]O<W0N;W)G.R!3870L(#$Q($YO=B R,# V(#(P.C0Y
M.C,R("LP,3 P#0I/<FEG:6YA;"U296-E:79E9#H_at_9G)O;2!M<FYG+3 S+3(S
M,"YD<VPN;F5T:6YS+FYE=" H6S(P-RXS,BXQ,2XR,S!=*0T*"6)Y(&UA:6XN
M9VUA;F4N;W)G('=I=&@@97-M=' @*$=M97AI;2 P+C$@*$1E8FEA;BDI#0H)
M:60@,4%L;G51+3 P,#=H=BTP, T*"69O<B \8F]O<W0M=7-E<G- ;&ES=',N
M8F]O<W0N;W)G/CL_at_4V%T+" Q,2!.;W8@,C P-B R,#HT.3HS,B K,#$P, T*
M3W)I9VEN86PM4F5C96EV960Z(&9R;VT@=&IG;VQU8FD_at_8GD@;7)N9RTP,RTR
M,S N9'-L+FYE=&EN<RYN970@=VET:"!L;V-A;" H1VUE>&EM(# N,0T*"2A$
M96)I86XI*2!I9" Q06QN=5$M,# P-VAV+3 P#0H)9F]R(#QB;V]S="UU<V5R
M<T!L:7-T<RYB;V]S="YO<F<^.R!3870L(#$Q($YO=B R,# V(#(P.C0Y.C,R
M("LP,3 P#0I8+4EN:F5C=&5D+59I82U';6%N93H@:'1T<#HO+V=M86YE+F]R
M9R\-"D]R:6=I;F%L+51O.B!B;V]S="UU<V5R<T!L:7-T<RYB;V]S="YO<F<-
M"D]R:6=I;F%L+4QI;F5S.B X,0T*3W)I9VEN86PM6"U#;VUP;&%I;G1S+51O
M.B!U<V5N971 <V5A+F=M86YE+F]R9PT*6"U';6%N92U.3E10+5!O<W1I;F<M
M2&]S=#H@;7)N9RTP,RTR,S N9'-L+FYE=&EN<RYN970-"E_at_M35--86EL+5!R
M:6]R:71Y.B!.;W)M86P-"E_at_M3F5W<W)E861E<CH_at_36EC<F]S;V9T($]U=&QO
M;VL_at_17AP<F5S<R V+C P+C(Y,# N,C_at_V.0T*6"U-:6UE3TQ%.B!0<F]D=6-E
M9"!">2!-:6-R;W-O9G0_at_36EM94],12!6-BXP,"XR.3 P+C(Y-C(-"E_at_M4D9#
M,C8T-CH_at_1F]R;6%T/49L;W=E9#L_at_3W)I9VEN86P-"E_at_M36%I;&UA;BU!<'!R
M;W9E9"U!=#H_at_4V%T+" Q,2!.;W8@,C P-B Q-#HU,3HU,R M,#4P, T*6"U"
M965N5&AE<F4Z(&)O;W-T+75S97)S0&QI<W1S+F)O;W-T+F]R9PT*6"U-86EL
M;6%N+59E<G-I;VXZ(#(N,2XY#0I0<F5C961E;F-E.B!L:7-T#0I,:7-T+4ED
M.B!";V]S="!5<V5R<R!M86EL:6YG(&QI<W0@/&)O;W-T+75S97)S+FQI<W1S
M+F)O;W-T+F]R9SX-"DQI<W0M56YS=6)S8W)I8F4Z(#QH='1P.B\O;&ES=',N
M8F]O<W0N;W)G+VUA:6QM86XO;&ES=&EN9F\N8V=I+V)O;W-T+75S97)S/BP-
M"@D\;6%I;'1O.F)O;W-T+75S97)S+7)E<75E<W1 ;&ES=',N8F]O<W0N;W)G
M/W-U8FIE8W0]=6YS=6)S8W)I8F4^#0I,:7-T+4%R8VAI=F4Z(#QH='1P.B\O
M;&ES=',N8F]O<W0N;W)G+TUA:6Q!<F-H:79E<R]B;V]S="UU<V5R<SX-"DQI
M<W0M4&]S=#H@/&UA:6QT;SIB;V]S="UU<V5R<T!L:7-T<RYB;V]S="YO<F<^
M#0I,:7-T+4AE;' Z(#QM86EL=&\Z8F]O<W0M=7-E<G,M<F5Q=65S=$!L:7-T
M<RYB;V]S="YO<F<_<W5B:F5C=#UH96QP/@T*3&ES="U3=6)S8W)I8F4Z(#QH
M='1P.B\O;&ES=',N8F]O<W0N;W)G+VUA:6QM86XO;&ES=&EN9F\N8V=I+V)O
M;W-T+75S97)S/BP-"@D\;6%I;'1O.F)O;W-T+75S97)S+7)E<75E<W1 ;&ES
M=',N8F]O<W0N;W)G/W-U8FIE8W0]<W5B<V-R:6)E/@T*3W)I9VEN86PM4V5N
M9&5R.B!B;V]S="UU<V5R<RUB;W5N8V5S0&QI<W1S+F)O;W-T+F]R9PT*17)R
M;W)S+51O.B!B;V]S="UU<V5R<RUB;W5N8V5S0&QI<W1S+F)O;W-T+F]R9PT*
M6')E9CH@;F5W<RYG;6%N92YO<F<@9VUA;F4N8V]M<"YL:6(N8F]O<W0N=7-E
M<CHR,CDR-_at_T*07)C:&EV960M070Z(#QH='1P.B\O<&5R;6%L:6YK+F=M86YE
M+F]R9R]G;6%N92YC;VUP+FQI8BYB;V]S="YU<V5R+S(R.3(V/@T*#0I(96QL
M;R!A9V%I;B!E=F5R>6]N92$-"D)O;R!35" @/3T@*%-C87)E>2!S:6=N86QS
M("8@=&AR96%D<RD-"@T*4VEG;F%L<R]S;&]T<R!A<F4@:G5S="!T;V\@9V]O
M9"!N;W0@=&\@=7-E(&EN(&$@;75L=&DM=&AR96%D960_at_96YV:7)O;FUE;G0N
M#0I3;VUE9&%Y+"!T:&ES('=I;&P_at_8F4@9FEX960L($D@:VYO=RX@($)U="!F
M;W(@;F]W+BXN#0H-"DDG;2!T<GEI;F<@=&\@<V5R:6%L:7IE(&%C8V5S<R!T
M;R!B;V]S="YS:6=N86QS('5S:6YG($)J87)N92!3=')O=7-T<G5P<R -"B)W
M<F%P<&5R(B!C;VYC97!T+@T*2&5R92=S('=H870_at_22=M(&1O:6YG+B @27,@
M=&AI<R!L:6ME;'D@=&\@8V%U<V4@<')O8FQE;7,_(%-O<G)Y(&%B;W5T('1H
M92 -"FQE;F=T:"X-"DEF('1H:7,@:7,@=&]O(&1A;F=E<F]U<RP@=VAA="=S
M(&$@8F5T=&5R(&%L=&5R;F%T:79E/PT*#0I)('1Y<&5D('1H:7,@9G)O;2!M
M96UO<GD_at_86YD(&1I9&XG="!T<GD@=&\@8V]M<&EL92X-"E!L96%S92!D:7-R
M96=A<F0_at_86YY('1Y<&]S(&]R('-Y;G1A8W1I8R!B;'5N9&5R<RX-"@T*+R\@
M26UP;&5M96YT<R!":F%R;F4_at_4W1R;W5S=')U<"=S(")W<F%P<&5R(B!C;VYC
M97!T('5S:6YG(&)O;W-T.CIS:&%R961?<'1R+@T*=&5M<&QA=&4@/'1Y<&5N
M86UE(%0^(&-L87-S(%=R87!P97(@>PT*("!4*B!P.PT*<'5B;&EC._at_T*(" @
M97AP;&EC:70_at_5W)A<'!E<BA4)B!O8FHI(#H@<"@F;V)J*2![('T-"B @(&)O
M;W-T.CIS:&%R961?<'1R/%0^(&=E="@I(&-O;G-T('L-"B @(" @(' M/G!R
M969I>"@I.PT*(" @(" @<F5T=7)N(&)O;W-T.CIS:&%R961?<'1R/%0^*' L
M(&)O;W-T.CIM96U?9FXH)E0Z.G-U9F9I>"DI.PT*(" @?2 O+R!G970-"B @
M(&)O;W-T.CIS:&%R961?<'1R/%0^(&]P97)A=&]R+3XH*2!C;VYS="![(')E
M='5R;B!G970H*3L@?0T*?3L@+R]7<F%P<&5R#0H-"B\O(%!R;W9I9&5S('-I
M9VYA;',@=&AR;W5G:" B<V%F92(@=W)A<'!E<BX@*#\I#0IC;&%S<R!4:650
M;VEN="![#0IP=6)L:6,Z#0H@(&-L87-S($5V96YT<R![#0H@(" @375T97@@
M;&]C:SL@("\O(%!R;W9I9&5D(&5L<V5W:&5R92X-"B @("!V;VED('!R969I
M>"@I('L@;&]C:RYA8W%U:7)E*"D[('T-"B @("!V;VED('-U9F9I>"@I("![
M(&QO8VLN<F5L96%S92_at_I.R!]#0H@(" @9G)I96YD(&-L87-S(%=R87!P97(\
M179E;G1S/CL-"B @<'5B;&EC._at_T*(" @(&)O;W-T.CIS:6=N86P\=F]I9" H
M4VEG;F%L,4%R9W,I/B!S:6=N86PQ.PT*(" @(&)O;W-T.CIS:6=N86P\=F]I
M9" H4VEG;F%L,D%R9W,I/B!S:6=N86PR.PT*(" @("\O(&5T8RXN+@T*(" @
M('1E;7!L871E(#QC;&%S<R!)=&5R/@T*(" @('9O:60_at_9&ES8V]N;F5C="A)
M=&5R(&)E9VEN7RP_at_271E<B!E;F1?*2![#0H@(" @("!S=&0Z.F9O<E]E86-H
M*&)E9VEN7RP_at_96YD7RP-"B @(" @(" @(&)O;W-T.CIM96U?9FXH)F)O;W-T
M.CIS:6=N86QS.CIC;VYN96-T:6]N.CID:7-C;VYN96-T*3L-"B @("!]("\O
M(&1I<V-O;FYE8W0-"B @?3L@+R\@179E;G1S#0IP<FEV871E._at_T*("!%=F5N
M=',@7V5V96YT<SL-"G!U8FQI8SH-"B @5W)A<'!E<CQ%=F5N=',^(&5V96YT
M<SL-"B @5&EE4&]I;G0H*2 Z(%]E=F5N=',H*2P_at_979E;G0H7V5V96YT<RD@
M>R!]#0I].R O+R!4:650;VEN= T*#0HO+R!$96UO;G-T<F%T97,@=7-E(&]F
M(%1I95!O:6YT(&-L87-S+@T*8VQA<W,@57-E<U-I9VYA;',@>PT*<')I=F%T
M93H-"B @=F]I9"!H86YD;&4Q*%-I9VYA;#%!<F=S*2![("XN+B!]#0H@('9O
M:60@:&%N9&QE,BA3:6=N86PR07)G<RD@>R N+BX@?0T*("!S=&0Z.G9E8W1O
M<CQB;V]S=#HZ<VEG;F%L<SHZ8V]N;F5C=&EO;CX_at_8V]N;G,[(" O+R!"92!V
M97)Y(&-A<F5F=6P@=VET:" -"G1H97-E+@T*<'5B;&EC._at_T*("!V;VED(&-O
M;FYE8W0H5&EE4&]I;G0F('1I95!T*2![#0H@(" @8F]O<W0Z.G-H87)E9%]P
M='(\5&EE4&]I;G0Z.D5V96YT<SX_at_979E;G1S(#T@=&EE4'0N979E;G1S+F=E
M="@I.PT*(" @(&-O;FYS+G!U<VA?8F%C:RAE=F5N=',M/G-I9VYA;#$N8V]N
M;F5C="A(86YD;&4Q*2D[#0H@(" @8V]N;G,N<'5S:%]B86-K*&5V96YT<RT^
M<VEG;F%L,BYC;VYN96-T*$AA;F1L93(I*3L-"B @?2 O+R!C;VYN96-T#0H@
M('9O:60_at_9&ES8V]N;F5C="A4:650;VEN="8@=&EE4'0I('L-"B @("!T:650
M="YE=F5N=',M/F1I<V-O;FYE8W0H8V]N;G,N8F5G:6XH*2P_at_8V]N;G,N96YD
M*"DI.PT*(" @(&-O;FYS+F-L96%R*"D[#0H@('T@+R\@9&ES8V]N;F5C= T*
M("!V;VED('-I9VYA;$IU<W1/;F4H5&EE4&]I;G0F('1I95!T*2![#0H@(" @
M=&EE4'0N979E;G1S+3YS:6=N86PQ*'-I9VYA;#%A<F=S*3L-"B @?2 O+R!S
M:6=N86Q*=7-T3VYE#0H@('9O:60@<VEG;F%L36%N>2A4:650="8@=&EE4'0I
M('L-"B @("!B;V]S=#HZ<VAA<F5D7W!T<CQ->4-L87-S.CI%=F5N=',^(&5V
M96YT<R ]('1I95!T+F5V96YT<RYG970H*3L-"B @("!E=F5N=',M/G-I9VYA
M;#$H<VEG;F%L,6%R9W,I.PT*(" @(&5V96YT<RT^<VEG;F%L,BAS:6=N86PR
M87)G<RD[#0H@(" @+BXN#0H@('T@+R\@<VEG;F%L36%N>0T*?3L@+R\@57-E
(<U-I9VYA;',`
`
end


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net