Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 23.12.2008
Сообщений: 38

Работа с потоками

17.08.2012, 19:00. Показов 2102. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите
В одной функции идёт больше одного патока
надо чтобы все потоки остановились пока один выполняется
и так все по очереди

Вот я попытался с void THREAD()
разделить все потоки в циклы
пока один выполняется все ждут
проблема в том что некоторые потоки идут синхронно и они не разделяются идут в один цикл

конечно можно выделять под каждый поток свою функцию но мне так не надо меня интересует как их
по о череде пускать по одной функции

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
int exit1;
//---------------------------------------------------------------------------
#define max 100
int th[101];
int th1=0;
int th2=0;
//---------------------------------------------------------------------------
class VVS{
public:
        int *w;
        void THwait()
        {
                th1++;
                Sleep(th1);
                if(th1 >= max) th1=0;
 
                w = &th[th1];
                *w = 1;
                if(th1 == th2){
                        *w = 0;
                        return;
                }
                while(*w){
                        Sleep(1);
                }
                *w = 0;
        }
        void THrun()
        {
                Sleep(1);
                th2++;
                if(th2 >= max) th2=0;
                if(w)*w = 0;
        }
 
        int fil;
        void THwait2()
        {
                fil=-1;
                while(fil == -1){
                        fil = FileOpen("Unit1.~cpp",0);
                        Sleep(1);
                }
                if(fil <= 0)
                        int t=0;
        }
        void THrun2()
        {
                if(fil <= 0)
                        int t=0;
 
                FileClose(fil);
        }
};VVS vvs[101];
//---------------------------------------------------------------------------
void THREAD()
{
exit1++;
        th1++;
        if(th1 >= max) th1=0;
        vvs[th1].THwait2();
//vvs.THwait();
//--------------------------
MessageBox(0,0,0,0);
//--------------------------
        th2++;
        if(th2 >= max) th2=0;
        vvs[th2].THrun2();
//--------------------------
exit1--;
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
        int c=0;while(c < 10){
                CreateThread(0,0,(LPTHREAD_START_ROUTINE)THREAD,0,0,0);
        c++;}
 
        exit1=1;
        Sleep(1);
        while(exit1){
                Sleep(1);
        }
        return 0;
}
//---------------------------------------------------------------------------
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.08.2012, 19:00
Ответы с готовыми решениями:

Работа с потоками
Всем доброго времени суток. Кто может подсказать, как реализовать, вот такую функцию по выяснению простое (сложное) для двух чисел,...

Работа с потоками
Доброго времени суток. Нужно создать программу, в которой имеется как минимум 3 потока ( форма + 2 дополнительных ). Задачи решаемые в...

Работа с 2-мя потоками
Здравствуйте! Ребята, помогите, разобраться решил уделить внимание потокам в программе и изучить как их лучше применять. Для этого открыл...

1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.08.2012, 19:11
WaitForSingleObject()
WaitForMultipleObjects()


А вообще если вы юзаете vcl, то логичнее использовать класс TThread

Добавлено через 2 минуты
C++
1
#define max 100
C++
1
const size_t max= 100;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.08.2012, 19:11
Помогаю со студенческими работами здесь

Работа с потоками
Всем здравствуйте. Программа обращается к некоторому файлу по локальной сети на удалённом компьютере. Из этого файла в программу...

Работа с потоками и процессами windows
Почему выбивает ошибку в строке PInf *Inf ? Нашёл пример в методичке..помогите разобраться #include &lt;vcl.h&gt; ...

Работа с потоками через OpenDialog
Как сделать чтобы в таком коде мы могли выбрать файл (при помощи OpenDialog) с которого будем считывать ? ifstream A (&quot;FILE...

Работа с потоками.
Здравствуйте. Есть программа реализующая перебор вариантов размена суммы (к примеру 100 = 100, 100 = 50 + 50 т.д.) #include...

работа с потоками
Добрый вечер! Есть файл txt, состоит из символов, чисел, необходимо его открыть, упорядочить некоторым образом и записать, начал с...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 25.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 25.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru