<div dir="ltr">Thank you very much :)<br>for keeping track of my created threads i decided to use thread_groups and accumulate them there . i came up with sth like this :<br><br>������� boost::thread_group threadstore;<br>

������� <br>������� threadstore.add_thread(&amp;thread);<br>������� threadstore.add_thread(&amp;thread2);<br>������� BOOST_FOREACH(boost::thread t ,threadstore.threads)<br>������� {<br>����������� cout&lt;&lt;t.get_id();<br>

������� }<br><br><br>well it didnt compiled ! before that , i tried using sth like this which failed nontheless .<br><br>������ vector&lt;boost::thread&gt; threadstore;<br>������� <br>������� threadstore.push_back(thread);<br>

������� threadstore.push_back(thread2);<br>������� BOOST_FOREACH(boost::thread t ,threadstore)<br>������� {<br>����������� cout&lt;&lt;t.get_id();<br>������� }<br><br><br>im clueless of the cause .<br>The threadstore has member called� :threads , which i dont know how to work around it , there is also another member named: m ,<br>

�which i have no clue of what it is !nor i know where it came form! or what i can do with it!<br>�i couldnt find any information on these members on the boost::thread documentation either<br>for that example i posted , i moved the mutex inside the loop and then used a sleep() method for couple of microseconds and got it working ( i mean now both threads seem to work as i expected them).<br>

but i want to know if we have sth like , lets say a timed_lock kind of lock !, so that a thread would only hold a mutex for a specified time , and when the timeslice presented in the timed_lock() passes , the affordmentioned thread releases the mutex<br>

and thus other thread(s) can get that mutex and so there would be no need for a sleep() for a thread to wait till it time-slice finishes up and thus releases the mutex .the current timed_lock tries to obtain the mutex in a specified time , which is not the case .<br>

i remember i tried to use yield() for achieving such a possiblity (releasing mutex as soon as possible , i think it kinda worked ,i gave a similare result when i used sleep() )<br>here is the code which i wrote to actually speed up the sum action , which i think didnt give any speed ! would you see where the problem is ? <br>

//in the name of GOD<br>//Seyyed Hossein Hasan Pour<br>//Working with Boost::threads<br>#define BOOST_THREAD_USE_LIB<br>#include &lt;iostream&gt;<br>#include &lt;boost/date_time/posix_time/posix_time.hpp&gt;<br>#include &lt;boost/thread.hpp&gt;<br>

using namespace std;<br><br>boost::uint64_t� i = 0;<br>boost::uint64_t� sum=0;<br>boost::mutex mutex;<br><br>void IteratorFunc()<br>{<br><br>��� for (i ; i&lt;100000; i++)<br>��� {<br>������� mutex.lock();<br>������� sum+=i;<br>

������ cout&lt;&lt;i&lt;&lt;&quot;\t&quot;&lt;&lt;boost::this_thread::get_id()&lt;&lt;endl;<br>������� mutex.unlock();<br>������� //boost::this_thread::sleep(boost::posix_time::microseconds(200));<br>������ boost::this_thread::yield();<br>

��� }<br><br>}<br><br>int main()<br>{<br>��� boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time();<br>��� boost::thread thread(IteratorFunc);<br>��� boost::thread thread2(IteratorFunc);<br><br>

//��� boost::thread_group threadstore;<br>//<br>//��� threadstore.add_thread(&amp;thread);<br>//��� threadstore.add_thread(&amp;thread2);<br>//<br>//��� BOOST_FOREACH(boost::thread t ,threadstore.threads)<br>//��� {<br>//������� cout&lt;&lt;t.get_id();<br>

//��� }<br><br>��� boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time();<br><br>��� thread.join();<br>��� thread2.join();<br><br>��� cout &lt;&lt; &quot;sum =\t&quot; &lt;&lt; sum&lt;&lt; &quot;\t&quot;&lt;&lt;end-start&lt;&lt;endl;<br>

��� return 0;<br>}<br><br>i also want to know if we have such a capability where i can specify the priority of a thread or a group of thread against the other threads .<br>let me explain it little more, by that i mean , suppose we have couple of reader threads and one or two writer threads , is there any kind of possiblity that i can grant the writer thread(s) more priority in terms of accessing<br>

a resource (by obtaining the mutex more often ? - or the writer thread(s) deny access to readers in some cases ? ) ? or a part of memory ? ( e.g an array of some kind ? )<br>if it is possible , how can i achieve such possibility ?<br>

is it possible that i can know if a thread was successful in doing what it was sent to ?<br>can i specify that a thread or a group of thread execute in a specific order ? for example thread one must always execute first and thread two must always follow thread one . do we have such a thing ?<br>

do i have any means of talking to threads ? checking the satus of a specific thread ? or group of threads ?<br>can i know by any means , that which threads are blocked and which are not ?<br><br>Thank you so much for your time and please excuse me for such newbish and yet long questions .<br>

i really do appreciate your help and time :)<br>Regards<br>Hossein<br><br><br>On Wed, Apr 11, 2012 at 7:38 PM, Vicente J. Botet Escriba &lt;<a href="mailto:vicente.botet@wanadoo.fr">vicente.botet@wanadoo.fr</a>&gt; wrote:<br>

<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Le 11/04/12 13:31, Master a �crit�:
    <div class="im"><blockquote type="cite">
      <div dir="ltr">Hello all .<br>
        i am a newbie to the boost community . i recently started
        learning about threads in boost . now there are some questions i
        would like to ask :<br>
      </div>
    </blockquote></div>
    Welcome.<div class="im"><br>
    <blockquote type="cite">
      <div dir="ltr">1.where can i find examples showing practical uses
        of boost::thread features? <br>
      </div>
    </blockquote></div>
    The documentation doesn&#39;t contains too much examples. You can take a
    look at the libs/thread/example and tutorial directories :(
    <div class="im"><blockquote type="cite">
      <div dir="ltr">
        2.how can i get all threads ID issued by me in my app? <br>
      </div>
    </blockquote></div>
    No direct way other that storing them in a container. What is your
    use case?<div class="im"><br>
    <blockquote type="cite">
      <div dir="ltr">
        3.how can i iterate through running threads in my app ? <br>
      </div>
    </blockquote></div>
    No direct way other than storing a thread pointer in a container.
    What is your use case?
    <div class="im"><blockquote type="cite">
      <div dir="ltr">
        <a href="http://4.is" target="_blank">4.is</a> there any
        kind of means to get all the running threads using boost
        library? if it does whats the calss? if it doesnt how can i do
        that?<br>
      </div>
    </blockquote></div>
    See above. I think that you need to specialize the thread class so
    that it inserts a handle to the created thread on a container at
    construction time and remove it at destruction time.<div class="im"><br>
    <blockquote type="cite">
      <div dir="ltr">
        5.can i resume a thread after pausing it ? ( how can i pause a
        thread? )<br>
      </div>
    </blockquote></div>
    Boost.Thread doesn&#39;t provide fibers or resumable threads. There is
    Boost.Fiber for that purpose (not yet in Boost).<div class="im"><br>
    <blockquote type="cite">
      <div dir="ltr">6. how can i share a variable between two or more
        threads , suppose i have a loop , i want two threads to
        simultaneously iterate through it , if thread1 counted to 3,
        thread2 continues it from 4 and so on . ?<br>
        i already tried� <br>
      </div>
    </blockquote></div>
    You need to protect the access to the loop index variable &#39;i&#39; with a
    mutex as you did with sum.<br>
    <br>
    HTH,<br>
    Vicente<div class="im"><br>
    <blockquote type="cite">
      <div dir="ltr">------<br>
        <blockquote style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">what
          is wrong with my sample app ? <br>
          #include &lt;iostream&gt;<br>
          #include &lt;boost/thread.hpp&gt;<br>
          using namespace std;<br>
          using namespace boost;<br>
          <br>
          mutex bmutex;<br>
          int i=0;<br>
          int sum=0;<br>
          void IteratorFunc(int threadid)<br>
          {<br>
          ������������ for (� ; i&lt;25 ; i++)<br>
          ����������� {<br>
          ������������������� lock_guard&lt;mutex&gt; locker(bmutex);<br>
          ��������������������
cout&lt;&lt;&quot;\t&quot;&lt;&lt;threadid&lt;&lt;&quot;\t&quot;&lt;&lt;this_thread::get_id()&lt;&lt;&quot;\t&quot;&lt;&lt;i&lt;&lt;&quot;\n&quot;;<br>
          ��������������������� sum+=i;<br>
          ����������� }<br>
          }<br>
          <br>
          int main()<br>
          {<br>
          ��� //boost::posix_time::ptime start =
          boost::posix_time::microsec_clock::local_time();<br>
          <br>
          ��� thread thrd(IteratorFunc,1);<br>
          ��� thread thrd2(IteratorFunc,2);<br>
          �� <br>
          ��� cout&lt;&lt;sum;<br>
          ��� thrd.join();<br>
          ��� thrd2.join();<br>
          }<br>
        </blockquote>
      </div>
      <br>
    </blockquote>
    <br>
  </div></div>

<br>_______________________________________________<br>
Boost-users mailing list<br>
<a href="mailto:Boost-users@lists.boost.org">Boost-users@lists.boost.org</a><br>
<a href="http://lists.boost.org/mailman/listinfo.cgi/boost-users" target="_blank">http://lists.boost.org/mailman/listinfo.cgi/boost-users</a><br></blockquote></div><br></div>