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

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

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

Author24 — интернет-сервис помощи студентам
Объясните, пожалуйста, почему программа в консоль выводит 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 делает депозит на определенную сумму,...

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

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

Добавлено через 2 минуты
первый поток успевает инкремнтировать значение второй нет.
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
18.03.2020, 16:56 3
Цитата Сообщение от 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
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
18.03.2020, 17:20 4
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
18.03.2020, 17:20
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2020, 17:20
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru