
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@Z.G-C;W!E9%]L;V-K M(&QO8VLH;75T97@I.PT*"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@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@Z.G-C;W!E9%]L;V-K(&QO8VLH;75T97@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@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@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@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