<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: pthread_detach</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html</link>
    <description>Всем привет!!&lt;br&gt;Столкнулся с такой проблемой решение есть но ненравится оно мне чувствую что не надежно!&lt;br&gt;&lt;br&gt;Проблема заключается что pthread_detach не успевает отделить коректно созданный поток &lt;br&gt; в результате чего данные передоваемые в поток искажаются (мусор приходит)&lt;br&gt;если поставить sleep(1) то все ок иначе лажа но мне совсем не нравится решение со слипом вот пример кода&lt;br&gt;&lt;br&gt;//Сдесь происходит чтение файла по позиции&lt;br&gt;  while(1)&lt;br&gt;   &#123;sleep(2);&lt;br&gt;    if((end_pos=lseek (fd, -1, SEEK_END)) != -1)&lt;br&gt;      &#123;&lt;br&gt;       if(tmp_pos != end_pos)&lt;br&gt;         &#123;&lt;br&gt;            if(pre_pos != 0)&#123; pre_pos=pre_pos+1; &#125;&lt;br&gt;&lt;br&gt;            for(i = pre_pos; i &amp;lt;= end_pos; i++)&lt;br&gt;             &#123;&lt;br&gt;              len=lseek (fd, i, SEEK_SET);&lt;br&gt;              read(fd,ch,1);&lt;br&gt;&lt;br&gt;              setbuf(stdout, NULL);&lt;br&gt;&lt;br&gt;              if(ch&#091;0&#093; != &apos;&#092;n&apos;)&lt;br&gt;                &#123;c++;&lt;br&gt;                 string&#091;c-1&#093; = ch&#091;0&#093;;&lt;br&gt;                 string&#091;c&#093; = &apos;&#092;0&apos;;&lt;br&gt;                &#125;&lt;br&gt;              if(ch&#091;0&#093; == &apos;&#092;n&apos;)&lt;br&gt;                &#123;&lt;br&gt;                 c = 0;&lt;br&gt;           </description>

<item>
    <title>pthread_detach (maksim)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#10</link>
    <pubDate>Fri, 26 Dec 2008 17:11:48 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;  strcpy(string,(char*)arg); &lt;br&gt;&amp;gt;&amp;gt;  free((char*)arg); &lt;br&gt;&amp;gt;&amp;gt;  pthread_mutex_unlock(&amp;m); &lt;br&gt;&amp;gt;&amp;gt;  return 0; &lt;br&gt;&amp;gt;&amp;gt; &#125; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Или может быть вот такой вот самый правильный вариант ? &lt;br&gt;&amp;gt;  pthread_create(&amp;threads&#091;0&#093;, &amp;attr, inc_count, (void *)&amp;thread_ids&#091;0&#093;); &lt;br&gt;&amp;gt;  pthread_create(&amp;threads&#091;1&#093;, &amp;attr, inc_count, (void *)&amp;thread_ids&#091;1&#093;); &lt;br&gt;&amp;gt;  pthread_create(&amp;threads&#091;2&#093;, &amp;attr, watch_count, (void *)&amp;thread_ids&#091;2&#093;); &lt;br&gt;&lt;br&gt;Огромное Вам спасибо наконец то вроде прояснилось мне ближе индексация буду юзать ее!&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (maksim)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#9</link>
    <pubDate>Fri, 26 Dec 2008 16:55:50 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;void * child(void* arg) &lt;br&gt;&amp;gt; &#123; &lt;br&gt;&amp;gt;  pthread_mutex_lock(&amp;m); &lt;br&gt;&amp;gt;  char string&#091;strlen((char*)arg+10)&#093;; &lt;br&gt;&amp;gt;  strcpy(string,(char*)arg); &lt;br&gt;&amp;gt;  free((char*)arg); &lt;br&gt;&amp;gt;  pthread_mutex_unlock(&amp;m); &lt;br&gt;&amp;gt;  return 0; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&lt;br&gt;Или может быть вот такой вот самый правильный вариант ?&lt;br&gt;  pthread_create(&amp;threads&#091;0&#093;, &amp;attr, inc_count, (void *)&amp;thread_ids&#091;0&#093;);&lt;br&gt;  pthread_create(&amp;threads&#091;1&#093;, &amp;attr, inc_count, (void *)&amp;thread_ids&#091;1&#093;);&lt;br&gt;  pthread_create(&amp;threads&#091;2&#093;, &amp;attr, watch_count, (void *)&amp;thread_ids&#091;2&#093;);&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (maksim)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#8</link>
    <pubDate>Fri, 26 Dec 2008 16:28:09 GMT</pubDate>
    <description>Вот так спасет ситуацию исключит совместный доступ к объекту?&lt;br&gt;&lt;br&gt;void * child(void* arg)&lt;br&gt; &#123; &lt;br&gt;  pthread_mutex_lock(&amp;m);&lt;br&gt;  char string&#091;strlen((char*)arg+10)&#093;;&lt;br&gt;  strcpy(string,(char*)arg);&lt;br&gt;  free((char*)arg); &lt;br&gt;  pthread_mutex_unlock(&amp;m); &lt;br&gt;  return 0;&lt;br&gt; &#125;&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (vic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#7</link>
    <pubDate>Fri, 26 Dec 2008 16:14:02 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;выйдет из функции или после этого, это при каждом запуске по &lt;br&gt;&amp;gt;&amp;gt;своему, они же параллельны :) &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;ессно необходимо выделять строку хотя бы через тот же malloc(), и не &lt;br&gt;&amp;gt;&amp;gt;забывать ее потом корректно free(). &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Да при использовании malloc все (работатет) как надо(наверно)  спасибо! &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;А что бы не было пролем с освобаждением памяти(когда один поток закончил &lt;br&gt;&amp;gt;а майн выделяет новый кусок) mutex спасет положение? &lt;br&gt;&lt;br&gt;смотря к чему применять мьютекс :)&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (maksim)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#6</link>
    <pubDate>Fri, 26 Dec 2008 16:07:06 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;хуже, порождаемый поток в вашем случае повинуясь великому рандому может успеть получить &lt;br&gt;&amp;gt;валидную строку, а может не успеть, может успеть с ней поработать, &lt;br&gt;&amp;gt;а может не успеть. При выходе из функции строка разрушается, причем &lt;br&gt;&amp;gt;что будет с участком памяти - неопределенно, тем более на стеке. &lt;br&gt;&amp;gt;Момент когда второй поток начнет работать неизвестно, до того как первый &lt;br&gt;&amp;gt;выйдет из функции или после этого, это при каждом запуске по &lt;br&gt;&amp;gt;своему, они же параллельны :) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;ессно необходимо выделять строку хотя бы через тот же malloc(), и не &lt;br&gt;&amp;gt;забывать ее потом корректно free(). &lt;br&gt;&lt;br&gt;Да при использовании malloc все (работатет) как надо(наверно)  спасибо! &lt;br&gt;&lt;br&gt;А что бы не было пролем с освобаждением памяти(когда один поток закончил а майн выделяет новый кусок) mutex спасет положение?&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (vic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#5</link>
    <pubDate>Fri, 26 Dec 2008 15:03:45 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt;чертов оверквотинг, по 5 пункту смотрите на содержимое свой функции start_thread_jurnal() &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Да я понял спасибо .. разбираюсь ... &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;malloc надо заюзать иначе треды будут работать с одним участком памяти? &lt;br&gt;&lt;br&gt;хуже, порождаемый поток в вашем случае повинуясь великому рандому может успеть получить валидную строку, а может не успеть, может успеть с ней поработать, а может не успеть. При выходе из функции строка разрушается, причем что будет с участком памяти - неопределенно, тем более на стеке. Момент когда второй поток начнет работать неизвестно, до того как первый выйдет из функции или после этого, это при каждом запуске по своему, они же параллельны :)&lt;br&gt;&lt;br&gt;ессно необходимо выделять строку хотя бы через тот же malloc(), и не забывать ее потом корректно free().&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (maksim)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#4</link>
    <pubDate>Fri, 26 Dec 2008 14:19:23 GMT</pubDate>
    <description>&amp;gt;&amp;gt;чертов оверквотинг, по 5 пункту смотрите на содержимое свой функции start_thread_jurnal() &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Да я понял спасибо .. разбираюсь ... &lt;br&gt;&lt;br&gt;malloc надо заюзать иначе треды будут работать с одним участком памяти?&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (maksim)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#3</link>
    <pubDate>Fri, 26 Dec 2008 14:16:18 GMT</pubDate>
    <description>&amp;gt;чертов оверквотинг, по 5 пункту смотрите на содержимое свой функции start_thread_jurnal() &lt;br&gt;&lt;br&gt;Да я понял спасибо .. разбираюсь ...&lt;br&gt;</description>
</item>

<item>
    <title>pthread_detach (vic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7802.html#2</link>
    <pubDate>Fri, 26 Dec 2008 14:01:40 GMT</pubDate>
    <description>чертов оверквотинг, по 5 пункту смотрите на содержимое свой функции start_thread_jurnal()&lt;br&gt;</description>
</item>

</channel>
</rss>
