|
![]() |
Архивированная нить - только для чтения!
Пред. тема | След. тема | ||
Форумы
![]() | |||
---|---|---|---|
Изначальное сообщение | [Проследить за развитием треда] |
"Linux threads (Или я дурак или потоки г..но)" | |
Сообщение от Iancen ![]() ![]() ![]() | |
Решил портировать потоки под линух из win32 и столкнулся с парадоксом, или у меня руки кривые или ядро криво компильнуто или я вообще ничего не понимаю или под конец потоки в линухе г..но. Одним словом получилось что потоки в линухе реализованы невытесняемым методом ? т.е. у меня есть два потока, каждый работает в глухом цикле. Если я не вызываю sched_yield() то второй поток у меня не получает управление.<p>пример:<br>#include "unistd.h"<br>#include "pthread.h"<br>#include "sched.h"<p>void *thread_routine1(void *arg){<br> int i=0;<br> sleep(3);<br> for(;i>=0;i++){<br> printf("thread1 %d\n",i);<br>// sched_yield();<br> }<br> return NULL;<br>}<br>void *thread_routine2(void *arg){<br> int i=0;<br> sleep(3);<br> for(;i>=0;i++){<br> printf("thread2 %d\n",i);<br>// sched_yield();<br> }<br> return NULL;<br>}<br>int main (int argc, char *argv[]){<br> pthread_t thread_id1,thread_id2;<br> pthread_attr_t thread_attr1,thread_attr2;<br> pthread_attr_init (&thread_attr1);<br> pthread_attr_init (&thread_attr2);<br> pthread_create (&thread_id1, &thread_attr1, thread_routine1, NULL);<br> pthread_create (&thread_id2, &thread_attr2, thread_routine2, NULL);<br> pthread_join (thread_id1, NULL);<br> pthread_join (thread_id2, NULL);<br> return 0;<br>}<p>Если кто понимает в чем я лопухнулся подскажите, а то такой великий проект пропадает из за этого маразма.<p>p.s.<br>CPU 1шт.<br>Linux 2.2.12 | |
Рекомендовать в FAQ | Cообщить модератору | Наверх |
Оглавление |
|
Индекс форумов | Темы | Пред. тема | След. тема |
Сообщения по теме |
1. "Re: Linux threads (Или я дурак или потоки г..но)" | |
Сообщение от Andrew ![]() ![]() ![]() | |
: Решил портировать потоки под линух из win32 и столкнулся с парадоксом, или у меня руки кривые или ядро криво компильнуто или я вообще ничего не понимаю или под конец потоки в линухе г..но. Одним словом получилось что потоки в линухе реализованы невытесняемым методом ? т.е. у меня есть два потока, каждый работает в глухом цикле. Если я не вызываю sched_yield() то второй поток у меня не получает управление.<br>Ну не знаю - может с ядром что-то не в порядке.<br>Я ради интереса у себя под 2.2.14 - пример пересобрал<br>все работает, нити переключаются.?<p><br> | |
Рекомендовать в FAQ | Cообщить модератору | Наверх |
2. "RE: Linux threads (Или я дурак или потоки г..но)" | |
Сообщение от Igor ![]() ![]() ![]() | |
откомпилено под FreeBSD 4.2-STABLE FreeBSD 4.2-STABLE #0: Thu Feb 1 14:58:35 MSK 2001 i386 с | |
Рекомендовать в FAQ | Cообщить модератору | Наверх |
Удалить |
Индекс форумов | Темы | Пред. тема | След. тема |
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |