Boost logo

Boost Users :

From: Peter Mackay (mackay.pete+gmane_at_[hidden])
Date: 2006-04-27 18:49:44


Hello,

I'm trying to use the Boost Threads library to help me implement a
background loading system for a game I'm writing.

I want to enqueue load requests while the main game thread is running, and
have a separate thread load the data and pass back the appropriate objects.

Currently when I enqueue a new request, I notify a 'something to do'
condition, which my loading thread waits on. The trouble is, when I notify
it, the loader could be loading in the background, and has a lock on the
mutex connected with the condition.
Would anyone be able to offer me any advice on how to solve this?

Many thanks,
Peter

P.S. Please find attached my current implementation.

begin 666 loader.cpp
M(VEN8VQU9&4@(FQO861E<BYH<' B#0H-"B-I;F-L=61E(#QB;V]S="]B:6YD
M+FAP<#X-"@T*;&]A9&5R.CIL;V%D97(H*0T*.B!T:')E861?<VAO=6QD7V5X
M:70H9F%L<V4I#0I[#0H)=&AR96%D+G)E<V5T*&YE=R!B;V]S=#HZ=&AR96%D
M*&)O;W-T.CIB:6YD*"9L;V%D97(Z.G1H<F5A9%]P<F]C+"!T:&ES*2DI.PT*
M?0T*#0IL;V%D97(Z.GYL;V%D97(H*0T*>PT*"2\O(%-I9VYA;"!T:&4@=&AR
M96%D('1O(&5X:70N#0H)>PT*"0EB;V]S=#HZ;75T97_at_Z.G-C;W!E9%]L;V-K
M(&QO8VLH;75T97_at_[hidden]*"0ET:')E861?<VAO=6QD7V5X:70@/2!T<G5E.PT*
M"0ES;VUE=&AI;F=?=&]?9&\N;F]T:69Y7V%L;"@I.PT*"7T-"@T*"2\O(%=A
M:70_at_9F]R('1H92!T:')E860@=&\@97AI="X-"@ET:')E860M/FIO:6XH*3L-
M"GT-"@T*=F]I9"!L;V%D97(Z.G1H<F5A9%]P<F]C*"D-"GL-"@DO+R!792=R
M92!L;V-K960@=6YL97-S('=E)W)E('=A:71I;F<@9F]R('-O;65T:&EN9R!T
M;R!D;RX-"@EB;V]S=#HZ;75T97_at_Z.G-C;W!E9%]L;V-K(&QO8VLH;75T97_at_I
M.PT*#0H)+R\@4G5N('5N=&EL('=E)W)E('1O;&0@=&\@97AI="XN+@T*"69O
M<B H.SLI#0H)>PT*"0DO+R!786ET('5N=&EL('=E(&=E="!S;VUE=&AI;F<@
M=&\@9&\N#0H)"7-O;65T:&EN9U]T;U]D;RYW86ET*&QO8VLI.PT*#0H)"2\O
M(%-H;W5L9"!W92!E>&ET/PT*"0EI9B H=&AR96%D7W-H;W5L9%]E>&ET*0T*
M"0E[#0H)"0DO+R!%>&ET('1H92!T:')E860N#0H)"0ER971U<FX[#0H)"7T-
M"@T*"0DO+R!T;V1O.B!$;R!A;&P@<&5N9&EN9R!L;V%D<R!H97)E("AC;W5L
C9"!B92!A(&QE;F=T:'D@;W!E<F%T:6]N*2X-"@E]#0I]#0H`
`
end

begin 666 loader.hpp
M(VEF;F1E9B!,3T%$15)?2%!0#0HC9&5F:6YE($Q/041%4E](4% -"@T*(VEN
M8VQU9&4@/'%U975E/@T*(VEN8VQU9&4@/&)O;W-T+W-H87)E9%]P='(N:'!P
M/@T*(VEN8VQU9&4@/&)O;W-T+W1H<F5A9"]C;VYD:71I;VXN:'!P/@T*(VEN
M8VQU9&4@/&)O;W-T+W1H<F5A9"]M=71E>"YH<' ^#0HC:6YC;'5D92 \8F]O
M<W0O=&AR96%D+W1H<F5A9"YH<' ^#0H-"F-L87-S(&QO861E<B Z('!R:79A
M=&4_at_8F]O<W0Z.FYO;F-O<'EA8FQE#0I[#0IP=6)L:6,Z#0H-"@EL;V%D97(H
M*3L-"@EV:7)T=6%L('YL;V%D97(H*3L-"@T*<')I=F%T93H-"@T*"79O:60)
M=&AR96%D7W!R;V,H*3L-"@T*"2\O($%C8V5S<VEB;&4_at_8GD@86YY('1H<F5A
M9"X-"@EB;V]S=#HZ;75T97@)"6UU=&5X.PT*"6)O;W-T.CIC;VYD:71I;VX)
M<V]M971H:6YG7W1O7V1O.PT*"6)O;VP)"0D)=&AR96%D7W-H;W5L9%]E>&ET
M.PT*"7-T9#HZ<75E=64\:6YT/@D)<&5N9&EN9U]L;V%D<SL-"@T*"2\O($%C
M8V5S<VEB;&4_at_8GD@=&AE(&UA:6X@=&AE860@;VYL>2X-"@EB;V]S=#HZ<VAA
M<F5D7W!T<CQB;V]S=#HZ=&AR96%D/@ET:')E860[#0I].PT*#0HC96YD:68-
!"@``
`
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