Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708

Многопоточность и процессы

20.06.2019, 11:54. Показов 1862. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал изучать многопоточность и реализацию ее на плюсах. Посоветуйте толковую литературу с хорошими примерами для понимания данного материала.

Добавлено через 2 минуты
И насколько я понял, то в одном потоке может быть несколько процессов. То есть процесс это часть потока, верно?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2019, 11:54
Ответы с готовыми решениями:

C++ Многопоточность
Как сделать так, чтобы эта программа заработала? А то она мне вот что пишет: g++ test.cpp -o test -lpthread ./test ...

THREAD.H (многопоточность)
нужно срочно разобраться в этой теме, но компилятор не находит THREAD.H #include <thread> #include <iostream> void...

Процессы и потоки c++
Написал код по методичке, который открывает файл Word и отдельно может открывать и закрывать отдельную программу. Но, если запустить...

5
829 / 253 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
20.06.2019, 12:41
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
И насколько я понял, то в одном потоке может быть несколько процессов.
Скорее наоборот.
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
Посоветуйте толковую литературу
Литература C++
1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
21.06.2019, 16:41
Лучший ответ Сообщение было отмечено Andy_Coldfield как решение

Решение

Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
в одном потоке может быть несколько процессов. То есть процесс это часть потока, верно?
нет.
любой winapi или crt вызов функций создания потока сводится к вызову нативной функции из ядра
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
typedef signed __int64(__fastcall* __ptr64 _NtCreateThread)(
    /*_Out_*/ HANDLE* __ptr64 ThreadHandle,
    /*_In_*/ unsigned __int32  DesiredAccess,
    /*_In_opt_ */ OBJECT_ATTRIBUTES* __ptr64 ObjectAttributes,
    /*_In_*/ HANDLE ProcessHandle,
    /*_Out_*/ CLIENT_ID64* __ptr64 ClientId,
    /*_In_*/ CONTEXT* __ptr64 ThreadContext,
    /*_In_*/ INITIAL_TEB* __ptr64 InitialTeb,
    /*_In_*/ unsigned __int8 CreateSuspended
    );
 
typedef signed __int64(__fastcall* __ptr64 _NtCreateThreadEx)(
    /*_Out_*/ HANDLE* __ptr64 ThreadHandle,
    /*_In_*/ unsigned __int32 DesiredAccess,
    /*_In_opt_*/ OBJECT_ATTRIBUTES* __ptr64 ObjectAttributes,
    /*_In_*/ HANDLE ProcessHandle,
    /*_In_*/ void* __ptr64 StartRoutine, // PUSER_THREAD_START_ROUTINE
    /*_In_opt_*/ void* __ptr64 Argument,
    /*_In_*/ unsigned __int32 CreateFlags, // THREAD_CREATE_FLAGS_*
    /*_In_*/ unsigned __int64 ZeroBits,
    /*_In_*/ unsigned __int64 StackSize,
    /*_In_*/ unsigned __int64 MaximumStackSize,
    /*_In_opt_*/ PS_ATTRIBUTE_LIST* __ptr64 AttributeList
    );
хендл потока инициализируется только в том случае, если в функцию передан хендл процесса.
процесс может иметь несколько потоков, созданных функциями NtCreateThread/NtCreateThreadEx
поток без процесса существовать не может.
2
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
23.06.2019, 16:50  [ТС]
_lunar_, ничего не понял из выше написанного Вами) Видимо мои познания очень скудны и надо наверстывать))
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
23.06.2019, 17:01
Andy_Coldfield, он имел ввиду, что всё наоборот: один процесс может иметь несколько потоков
1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
24.06.2019, 11:46
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
ничего не понял из выше написанного Вами
я привел прототип функции NtCreateThread.
если посмотреть параметры этой функции, то можно увидеть что в неё передаётся хендл процесса (HANDLE ProcessHandle), причём он обязателен для заполнения.
логично, что если у вас нет хендла процесса (т.е. данный параметр заполняется как NULL), то и функция NtCreateThread отработает не правильно, и на выходе хендл потока (HANDLE* __ptr64 ThreadHandle) будет равен NULL.

просто мне показалось, что на таком примере легче понять что есть процесс и что поток.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2019, 11:46
Помогаю со студенческими работами здесь

Многопоточность
Добрый вечер. Назрела тут проблема с многопоточностью. Вкратце: Есть программа, которая считывает из файлика построчно циферки (точнее -...

Многопоточность
Товарищи! Создаю 23 потока. вот так: ff1 = new f1(false); ff1->Priority = tpLower; Sleep(1000); после создания и старта...

Многопоточность
Есть такая трудность: 2 потока, первый считает, а второй каждом 10мс такте пишет в базу данных то что посчитал первый. делаю так: ...

Многопоточность
Здравсвуйте программисты! Дали лабораторную написать по многопоточности, никогда сталкивался с таким. Вот условие задания: ...

CppWebBrowser и Многопоточность
Не смотря на то, что CppWebBrowser сам по себе как браузер создает потоки и работает с ними, когда создаеш на форме CppWebBrowser CWB =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru