Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 12.07.2019
Сообщений: 7

как работают потоки?

18.03.2020, 16:44. Показов 422. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните, пожалуйста, почему программа в консоль выводит cnt1 = 1, cnt2 = 0, а не cnt1 = 1, cnt2 = 1?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "Windows.h"
#include <stdio.h>
int cnt1, cnt2;
DWORD WINAPI Thread1(LPVOID lpParam)
{
    cnt1++;
    return 0;
}
DWORD WINAPI Thread2(LPVOID lpParam)
{
    cnt2++;
    return 0;
}
int main()
{
    HANDLE h1, h2;
    cnt1 = 0, cnt2 = 0;
    h1 = CreateThread(NULL, 0, Thread1, &cnt1, 0, NULL);
    h2 = CreateThread(NULL, 0, Thread2, &cnt2, 0, NULL);
    printf_s("cnt1 = %i, cnt2 = %i\n", cnt1, cnt2);
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2020, 16:44
Ответы с готовыми решениями:

Файловые потоки типа wifstream и (или) wofstream неправильно работают
Друзья! Есть двустрочный файл в кодировке UTF-16LE, нужно с него считать две строки и перегнать их в другой файл. В общем, копировать таким...

Как работают потоки
Здравствуйте! Объясните мне каким образом работают потоки. Правда ли что они могут ОДНОВРЕМЕННО выполнять операции? То есть в определённые...

Потоки работают не так, как нужно
Имеется задание: изначально сумма в кассе равна нулю. Поток 1 делает депозит на определенную сумму, а Поток 2 делает списание на...

3
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
18.03.2020, 16:49
Цитата Сообщение от JokeJake Посмотреть сообщение
Объясните, пожалуйста, почему программа в консоль выводит
видимо потому что для создания второго потока уходит больше времени чем для вывода значения.

Добавлено через 2 минуты
первый поток успевает инкремнтировать значение второй нет.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.03.2020, 16:56
Цитата Сообщение от JokeJake Посмотреть сообщение
Объясните, пожалуйста, почему программа в консоль выводит cnt1 = 1, cnt2 = 0, а не cnt1 = 1, cnt2 = 1?
Потому что работу потоков надо синхронизировать. В твоём случае - поток main с потоками Thread1 и Thread2.
Сделай перед printf
C++
1
2
::WaitForSingleObject(h1, INFINITE);
::WaitForSingleObject(h2, INFINITE);
1
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
18.03.2020, 17:20
JokeJake,
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Потому что работу потоков надо синхронизировать
Совершенно верно, надо дождаться завершения созданных потоков!

Добавлено через 14 минут
Кстати, треды совершенно одинаковые. Почему бы их не сделать так?
C++
1
2
3
4
5
6
7
8
9
10
DWORD WINAPI Thread(LPVOID lpParam)
{
    (*((int*)lpParam))++;
    return 0;
}
 
//.........
 
    h1 = CreateThread(NULL, 0, Thread, &cnt1, 0, NULL);
    h2 = CreateThread(NULL, 0, Thread, &cnt2, 0, NULL);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2020, 17:20
Помогаю со студенческими работами здесь

Не работают потоки
new Thread((ThreadStart)delegate { keyThread(1, 2); }); new Thread((ThreadStart)delegate { keyThread(3, 4); }); ...

Не работают потоки
Здравствуйте! Мне необходимо написать программу с тремя потоками. Сами потоки почему-то не работают. В чем может быть ошибка? Первый...

Потоки не работают параллельно
Написал я такой кусок кода (все это внутри класса MainActivity): class CalcFiveSecClass extends AsyncTask&lt;Void, Void,...

Потоки медленно работают
Создаю 1 поток в нем выполняется цикл в конце цикла Thread.Sleep(100); Если запускаю одну программу то работает все быстро с задержкой в...

Криво работают потоки
Нужно решить проблему Допустим я выставил 10 потоков 1 поток должен делать так - Получает из файла логин и пароль - Отправляет...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru