|
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 5
|
|
Планирование потоков06.03.2013, 23:24. Показов 2145. Ответов 9
Метки нет (Все метки)
Задание состоит в том, чтобы создать собственный планировщик потоков в линукс, используя приоритеты потоков. Причем использовать только 1 POSIX поток.
Что делают потоки не важно, пусть в цикле увеличивают одну переменную. но нужно их синхронизировать между собой. Вопрос в том, как вообще реализовать параллельное выполнение потоков без использования pthread? Использовать как-то обработку событий? и переключать выполнение задачи на другую при появлении потока, выше по приоритету, чем выполняемый? подскажите просто основную идею, как это сделать и возможно некоторые инструменты, которыми нужно пользоваться.
0
|
|
| 06.03.2013, 23:24 | |
|
Ответы с готовыми решениями:
9
Когда происходит планирование потоков?
Создание и завершение процессов и потоков. Приоритеты выполнения потоков |
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|||
| 07.03.2013, 09:24 | |||
|
Гуглить user space threads
0
|
|||
|
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 5
|
||
| 07.03.2013, 10:20 [ТС] | ||
|
Про userspace поищу информацию, может через него как раз можно сделать. Спасибо))
0
|
||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|||
| 07.03.2013, 11:27 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 5
|
|
| 07.03.2013, 14:35 [ТС] | |
|
Не очень понятно, как это осуществить.. Как самому сделать псевдопараллельное выполнение команд разных функций?
надо создать свое представление потока.. как можно разбить неизвестную мне функцию на отдельные команды?
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 07.03.2013, 14:45 | |
|
Не надо ничего разбивать.
Погуглите на ключевые слова которые Вам дали и посмотрите на внутреннее устройство подобных библиотек. Если отбросить всякие навороты оно примитивно. Все сводиться к сохранению и переключению контекстов (например через sigsetjmp()) по сигналу интервального таймера.
1
|
|
|
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 5
|
|
| 07.03.2013, 20:58 [ТС] | |
|
g_u_e_s_t, Точно) Новичок просто в этом.)) Про контексты слышал, но не использовал, сейчас попробую.)
Добавлено через 5 часов 28 минут Посмотрел.. Контекст есть только у процесса? как запустить две функции 1 процесса псевдопараллельно? Нельзя же просто сказать функции стоп (причем не в самой функции), а потом после выполнения другой функцией пару-тройку команд, запустить первую? Добавлено через 3 минуты Нужно же не изнутри останавливать функцию, а из мейна к примеру. или из другой функции вообще. Добавлено через 28 минут Чтобы переключатся между функциями нужно использовать setjmp() и longjmp(), если я использую множество функций, то мне нужен массив переменных jmp_buf? чтобы хранить каждое состояние контекста в каждой функции... и как распараллелить выполнение функций (допустим их уже переключаем) и само переключение контекста?
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||||||||||
| 09.03.2013, 10:24 | ||||||||||
|
У Вас есть интервальный таймер, т.е. раз в N времени нормальное выполнение программы будет прерываться обработчиком сигнала этого таймера. Это и есть "ядро" Ваших нитей. return из обработчика сигнала вернет Вас в место выполнявшееся перед получением сигнала, а [sig]longjmp() передаст управление в точку где делали сохранение контекста. Вам нужно скомбинировать оба эти способа:
0
|
||||||||||
|
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 5
|
||||||
| 10.03.2013, 21:39 [ТС] | ||||||
0
|
||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 11.03.2013, 09:26 | ||
|
Да и не поможет Вам это, сама идея сделать longjmp() в уже мертвую нить мягко говоря ущербная.
0
|
||
| 11.03.2013, 09:26 | |
|
Помогаю со студенческими работами здесь
10
Замедление работы потоков если запущено несколько потоков Разработать программу, генерирующую n потоков в пуле потоков CLR Синхронизация потоков на элементарном уровне (переключение потоков)
Общение пхп потоков, есть ли область видимая для всех пхп потоков? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|