Boost logo

Boost :

From: Maxim Egorushkin (e-maxim_at_[hidden])
Date: 2003-07-01 00:19:35


"William E. Kempf" <wekempf_at_[hidden]> wrote in message
news:1960.167.16.75.51.1057006070.squirrel_at_frodo.kempf-ville.com...

> Now, what you're describing sounds more like this:
>
> class timer
> {
> public:
> timer(boost::function<void> on_event, int ms, bool repeat=false);
> };
>
> Which do you really want?

Yes, this is what I needed.

>
> As for "the problem was that I could be sure that the scheduler thread
> would receive its time slice exactly every 250 ms", you simply can't do
> this, portably or not. Granularity issues of the underlying clock aside,
> I'm not aware of any scheduler that would give you this sort of control,
> and fiddling with the priorities will only give you the illusion that
> you've accomplished what you want.

Totally agreed. I didn't solve the problem, rather I tryed to alleviate it.
You can look at it in the attachments. Finally, I switched to using win32
::CreateWaitableTimer() and ::RegisterWaitForSingleObject() functions.

begin 666 delayed_command_queue.cpp
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O#0HO+R!D96QA>65D7V-O;6UA;F1?<75E=64N8W!P#0H-"B-I;F-L
M=61E(")S=&1A9G_at_N:"(-"B-I;F-L=61E(")D96QA>65D7V-O;6UA;F1?<75E
M=64N:"(-"B-I;F-L=61E(")M=71E>%]P<F]T96-T960N:'!P(@T*#0IU<VEN
M9R!N86UE<W!A8V4@<W1D.PT*#0HO+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\-"@T*='EP961E9B!I;G0@;6EL
M;&ES96-O;F1S.PT*8V]N<W0@;6EL;&ES96-O;F1S('!L86YN97)?<&5R:6]D
M*#(U,"D[#0H-"FYA;65S<&%C90T*>PT*#0II;FQI;F4@;6EL;&ES96-O;F1S
M('1O7VUI;&QI<V5C;VYD<RAS96-O;F1S(',I#0I[#0H)<F5T=7)N(#$P,# @
M*B!S.PT*?0T*#0II;FQI;F4_at_8F]O<W0Z.GAT:6UE('1O7WAT:6UE*&UI;&QI
M<V5C;VYD<R!M*0T*>PT*"6)O;W-T.CIX=&EM92!X.PT*"71O7W1I;64H;2P@
M>"D[#0H)<F5T=7)N('@[#0I]#0H-"GT-"@T*8VQA<W,@<W1O<'=A=&-H#0I[
M#0IP=6)L:6,Z#0H)<W1O<'=A=&-H*"D-"@D)._at_ES=&%R=&5D7R_at_Z.D=E=%1I
M8VM#;W5N="@I*0T*"7M]#0H-"@EM:6QL:7-E8V]N9',@96QA<'-E9"@I(&-O
M;G-T#0H)>PT*"0ER971U<FX_at_[hidden]'9714:6-K0V]U;G0H*2 M('-T87)T961?
M.PT*"7T-"@T*<')I=F%T93H-"@EC;VYS="!$5T]21"!S=&%R=&5D7SL-"GT[
M#0H-"B\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+PT*#0IC;&%S<R!D96QA>65D7V-O;6UA;F1?<75E=65?:6UP
M;" Z('!U8FQI8R!R969?8V]U;G1E9%]I;7!L/&1E;&%Y961?8V]M;6%N9%]Q
M=65U93X-"GL-"@ET>7!E9&5F(&1E;&%Y961?8V]M;6%N9%]Q=65U95]I;7!L
M(&UE.PT*#0IP=6)L:6,Z#0H)9&5L87EE9%]C;VUM86YD7W%U975E7VEM<&PH
M*0T*"0DZ"7-T;W!?*&9A;'-E*0T*"0DL"7!L86YN961?;71?*'!L86YN961?
M+"!P;&%N;F5D7VUU=&5X7RD-"@D)+ ER96%D>5]M=%\H<F5A9'E?+"!R96%D
M>5]M=71E>%\I#0H)"2P)<&QA;FYE<E\H8F]O<W0Z.F)I;F0H)FUE.CIP;&%N
M;F5R7V9U;BP@=&AI<RDI#0H)"2P)=V]R:V5R7RAB;V]S=#HZ8FEN9"@F;64Z
M.G=O<FME<E]F=6XL('1H:7,I*0T*"7M]#0H-"@E^9&5L87EE9%]C;VUM86YD
M7W%U975E7VEM<&PH*0T*"7L-"@D)<W1O<%\@/2!T<G5E.PT*"0EC86YC96Q?
M86QL*"D[#0H)"7!L86YN97)?+FIO:6XH*3L-"@D)=V]R:V5R7RYJ;VEN*"D[
M#0H)?0T*#0IP=6)L:6,Z#0H)=F]I9"!S8VAE9'5L92AC;VYS="!C;VUM86YD
M7W F(&-M9"P@<V5C;VYD<R!D96QA>2D@=F]L871I;&4-"@E[#0H)"7!L86YN
M961?;&]C:R!L*&-O;G-T7V-A<W0\<&QA;FYE9%]L;V-K.CIM=71E>%]T>7!E
M)CXH<&QA;FYE9%]M=71E>%\I*3L-"@D)8V]N<W1?8V%S=#QM928^*"IT:&ES
M*2YS8VAE9'5L95]I;7!L*&-M9"P_at_9&5L87DI.PT*"7T-"@T*"79O:60@:'5R
M<GE?=7!?86QL*"D@=F]L871I;&4-"@E[#0H)"7!L86YN961?;&]C:R!L*&-O
M;G-T7V-A<W0\<&QA;FYE9%]L;V-K.CIM=71E>%]T>7!E)CXH<&QA;FYE9%]M
M=71E>%\I*3L-"@D)8V]N<W1?8V%S=#QM928^*"IT:&ES*2YH=7)R>5]U<%]A
M;&Q?:6UP;"@I.PT*"7T-"@T*"79O:60_at_8V%N8V5L7V%L;"@I('9O;&%T:6QE
M#0H)>PT*"0EP;&%N;F5D7VUT7RT^8VQE87(H*3L-"@D)<F5A9'E?;71?+3YC
M;&5A<B_at_[hidden]*"7T-"@T*"6)O;VP_at_96UP='DH*2!V;VQA=&EL92!C;VYS= T*
M"7L-"@D)<F5T=7)N('!L86YN961?;71?+3YE;7!T>2_at_I("8F(')E861Y7VUT
M7RT^96UP='DH*3L-"@E]#0H-"G!R:79A=&4Z#0H)=F]I9"!S8VAE9'5L95]I
M;7!L*&-O;G-T(&-O;6UA;F1?<"8_at_8VUD+"!S96-O;F1S(&1E;&%Y*0T*"7L-
M"@D)9&5L87D@/2!T;U]M:6QL:7-E8V]N9',H9&5L87DI.PT*"0EP;&%N;F5D
M7VQI<W0Z.FET97)A=&]R(&DH<&QA;FYE9%\N8F5G:6XH*2DL(&HH<&QA;FYE
M9%\N96YD*"DI.PT*"0EF;W(@*#L@:2 A/2!J("8F(&1E;&%Y(#X](&DM/F=E
M=#PP/B_at_I.R K*VDI#0H)"7L-"@D)"61E;&%Y("T](&DM/F=E=#PP/B_at_[hidden]*
M"0E]#0H)"7!L86YN961?+FEN<V5R="AI+"!P;&%N;F5D7V5L96UE;G0H9&5L
M87DL(&-M9"DI.PT*"0EI9B H:2 A/2!J*0T*"0D):2T^9V5T/# ^*"D@+3T@
M9&5L87D[#0H)?0T*#0H)=F]I9"!H=7)R>5]U<%]A;&Q?:6UP;"@I#0H)>PT*
M"0EF;W(@*'!L86YN961?;&ES=#HZ:71E<F%T;W(@:2AP;&%N;F5D7RYB96=I
M;B_at_I*2P@:BAP;&%N;F5D7RYE;F0H*2D[(&D@(3T@:CL@*RMI*0T*"0E[#0H)
M"0EI+3YG970\,#XH*2 ](# [#0H)"7T-"@E]#0H-"@EV;VED('!L86YN97)?
M9G5N*"D@+RIV;VQA=&EL92HO#0H)>PT*"0DZ.E-E=%1H<F5A9%!R:6]R:71Y
M*#HZ1V5T0W5R<F5N=%1H<F5A9"@I+"!42%)%041?4%))3U))5%E?2$E'2$53
M5"D[#0H-"@D)=VAI;&4@*"%S=&]P7RD-"@D)>PT*"0D)<W1O<'=A=&-H(',[
M#0H)"0EP;&%N;F5R7RYS;&5E<"AT;U]X=&EM92AP;&%N;F5R7W!E<FEO9"DI
M.PT*"0D):68@*'-T;W!?*0T*"0D)"6)R96%K.PT*"0D)#0H)"0EP;&%N;F5D
M7VQO8VL@<&PH<&QA;FYE9%]M=71E>%\I.PT*"0D)#0H)"0EI9B H<&QA;FYE
M9%\N96UP='DH*2D-"@D)"0EC;VYT:6YU93L-"@T*"0D)<&QA;FYE9%]E;&5M
M96YT)B!E*'!L86YN961?+F9R;VYT*"DI.PT*#0H)"0EI9B H," \("AE+F=E
M=#PP/B_at_I("T](',N96QA<'-E9"@I*2D-"@D)"0EC;VYT:6YU93L-"@T*"0D)
M>PT*"0D)"7)E861Y7VQO8VL@<FPH<F5A9'E?;75T97A?*3L-"@D)"0ER96%D
M>5\N<'5S:%]B86-K*&4N9V5T/#$^*"DI.PT*"0D)"6]N95]R96%D>5\N;F]T
M:69Y7V]N92_at_[hidden]*"0D)?0T*"0D)<&QA;FYE9%\N<&]P7V9R;VYT*"D[#0H)
M"7T-"@E]#0H-"@EV;VED('=O<FME<E]F=6XH*2 O*G9O;&%T:6QE*B\-"@E[
M#0H)"7=H:6QE("@A<W1O<%\I#0H)"7L-"@D)"7)E861Y7VQO8VL@;"AR96%D
M>5]M=71E>%\I.PT*#0H)"0EI9B H<F5A9'E?+F5M<'1Y*"DI#0H)"0E[#0H)
M"0D);VYE7W)E861Y7RYT:6UE9%]W86ET*&PL('1O7WAT:6UE*'!L86YN97)?
M<&5R:6]D("\@,BDI.PT*"0D)"6-O;G1I;G5E.PT*"0D)?0T*#0H)"0EC;VUM
M86YD7W @8VUD*')E861Y7RYF<F]N="@I*3L-"@D)"7)E861Y7RYP;W!?9G)O
M;G0H*3L-"@T*"0D);"YU;FQO8VLH*3L-"@T*"0D)8VUD+3YE>&5C=71E*"D[
M#0H)"7T-"@E]#0H-"G!R:79A=&4Z#0H)=F]L871I;&4_at_8F]O;"!S=&]P7SL-
M"@T*"71Y<&5D968_at_8F]O<W0Z.G1U<&QE/&UI;&QI<V5C;VYD<RP_at_8V]M;6%N
M9%]P/B!P;&%N;F5D7V5L96UE;G0[#0H)='EP961E9B!L:7-T/'!L86YN961?
M96QE;65N=#X@<&QA;FYE9%]L:7-T.PT*"7!L86YN961?;&ES="!P;&%N;F5D
M7SL-"@ET>7!E9&5F(&)O;W-T.CIM=71E>#HZ<V-O<&5D7VQO8VL@<&QA;FYE
M9%]L;V-K.PT*"6)O;W-T.CIM=71E>"!P;&%N;F5D7VUU=&5X7SL-"@EV;VQA
M=&EL92!U=&EL.CIM=71E>%]P<F]T96-T960\<&QA;FYE9%]L:7-T/B!P;&%N
M;F5D7VUT7SL-"@T*"71Y<&5D968@;&ES=#QC;VUM86YD7W ^(')E861Y7VQI
M<W0[#0H)<F5A9'E?;&ES="!R96%D>5\[#0H)='EP961E9B!B;V]S=#HZ;75T
M97_at_Z.G-C;W!E9%]L;V-K(')E861Y7VQO8VL[#0H)8F]O<W0Z.FUU=&5X(')E
M861Y7VUU=&5X7SL-"@EV;VQA=&EL92!U=&EL.CIM=71E>%]P<F]T96-T960\
M<F5A9'E?;&ES=#X@<F5A9'E?;71?.PT*#0H)8F]O<W0Z.F-O;F1I=&EO;B!O
M;F5?<F5A9'E?.PT*#0H)8F]O<W0Z.G1H<F5A9"!P;&%N;F5R7SL-"@EB;V]S
M=#HZ=&AR96%D('=O<FME<E\[#0I].PT*#0H-"B\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*#0ID96QA>65D
M7V-O;6UA;F1?<75E=65?<"!D96QA>65D7V-O;6UA;F1?<75E=65?8W1O<B_at_I
M#0I[#0H)<F5T=7)N(&YE=R!D96QA>65D7V-O;6UA;F1?<75E=65?:6UP;#L-
M"GT-"@T*+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
.+R\O+R\O+R\O+R\O#0H`
`
end

begin 666 delayed_command_queue.h
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O#0HO+R!D96QA>65D7V-O;6UA;F1?<75E=64N: T*#0HC<')A9VUA
M(&]N8V4-"@T*(VEN8VQU9&4@(G)E9E]C;W5N=&5D+F_at_B#0H-"B\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*
M#0IS=')U8W0_at_8V]M;6%N9" Z(')E9E]C;W5N=&5D#0I[#0H)=FER='5A;"!V
M;VED(&5X96-U=&4H*2 ](# [#0I].PT*='EP961E9B!B;V]S=#HZ:6YT<G5S
M:79E7W!T<CQC;VUM86YD/B!C;VUM86YD7W [#0H-"B\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*#0IT>7!E
M9&5F(&EN="!S96-O;F1S.PT*#0IS=')U8W0_at_9&5L87EE9%]C;VUM86YD7W%U
M975E(#H@<F5F7V-O=6YT960-"GL-"@EV:7)T=6%L('9O:60@<V-H961U;&4H
M8V]N<W0_at_8V]M;6%N9%]P)BP@<V5C;VYD<R!D96QA>2D@=F]L871I;&4@/2 P
M.PT*"79I<G1U86P@=F]I9"!H=7)R>5]U<%]A;&PH*2!V;VQA=&EL92 ](# [
M#0H)=FER='5A;"!V;VED(&-A;F-E;%]A;&PH*2!V;VQA=&EL92 ](# [#0H)
M=FER='5A;"!B;V]L(&5M<'1Y*"D@=F]L871I;&4_at_8V]N<W0@/2 P.PT*?3L-
M"G1Y<&5D968_at_8F]O<W0Z.FEN=')U<VEV95]P='(\9&5L87EE9%]C;VUM86YD
M7W%U975E/B!D96QA>65D7V-O;6UA;F1?<75E=65?<#L-"@T*9&5L87EE9%]C
M;VUM86YD7W%U975E7W @9&5L87EE9%]C;VUM86YD7W%U975E7V-T;W(H*3L-
M"@T*+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
++R\O+R\O+R\O#0H`
`
end


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk