Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets > Потоки


Автор: Garret 10.08.07, 11:13
Подскажите плиз где и что можно почитать про многопоточность в никсах? Знания темы имеются, хотелось бы как раз про реализацию.

Заранее спасибо.

Автор: gruy 10.08.07, 11:58
Ищи информацию по pthreads.

Автор: Flex Ferrum 10.08.07, 14:05
Garret, а что конкретно тебя интересует?

Автор: dnk 10.08.07, 14:09
реализация на уровне ядра(тогда называй конкретную версию ядра)? готовая либа?

Автор: Garret 10.08.07, 18:08
Цитата dnk @
реализация на уровне ядра(тогда называй конкретную версию ядра)? готовая либа?
Эх, с моими знаниями на уровне ядра :) Либа конечно, должна же быть такая?

Цитата Flex Ferrum @
Garret, а что конкретно тебя интересует?
Интересует статья где будет написано "Юзаете готовый класс CSuperThreads, запускаете поток myThhred.start()" и что то про синхронизацию, если там что то особенное. Хотелось бы основные сведенья и простейшую реализацию с примерами.

Автор: Flex Ferrum 10.08.07, 20:36
Тогда посмотри здесь: boost::threads. Вообщем то, примерно то, что тебе надо.

Автор: mo3r 11.08.07, 06:25
Можно почитать книжку Advanced Linux Programming, там есть глава про потоки.

Автор: Garret 11.08.07, 06:59
Цитата Flex Ferrum @
Тогда посмотри здесь
Буст кроссплатформенная библиотека? Спасибо :)

Цитата mo3r @
Можно почитать книжку Advanced Linux Programming, там есть глава про потоки.
Спасибо, не мог найти нормальной книги :rolleyes:

Автор: mo3r 11.08.07, 08:51
Цитата Garret @
Спасибо, не мог найти нормальной книги :rolleyes:

Только там в одном место говорится о том, как потоки реализованы, это читать не надо, там информация устаревшая :)

Автор: Garret 11.08.07, 09:30
Попробовал с Линуховым pthreads, вот самый простой код:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    #include <stdio.h>
    #include <pthread.h>
     
     
    void* print_xs(void* unused)
    {
        while (1)
            fputc('x', stderr);
     
        return NULL;
    }
     
    int main()
    {
        pthread_t thread_id;
     
        pthread_create(&thread_id, NULL, &print_xs, NULL);
     
        while (1)
            fputc('o', stderr);
     
     
        return 0;
    }


Вылетает ошибка "undefined reference to 'pthread_create'". WTF? :(

Автор: Flex Ferrum 11.08.07, 09:44
Цитата Garret @
WTF? :(

При компиляции/линковке надо указать ключик -lmt (если я не ошибаюсь). В man'е должно быть написано.

Автор: gruy 11.08.07, 10:25
Нет, нужен ключ -lpthread

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)