Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вывод результата в дочернем потоке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Недопустимые локальные определения функций http://www.cyberforum.ru/cpp-beginners/thread169830.html
Вот почитал еще немного литературы и решил попробовать написать прогу. #include <iostream> #include <string.h> #include <iostream> int main(){ setlocale(LC_ALL,"Russian"); class Subd{...
C++ Выделение памяти Эта программа должна забрать у системы 10 МБ, но диспетчер задач показывает, что программа забирает 163 МБ. Почему ? #include<iostream> using namespace std; int main() { cin.get();... http://www.cyberforum.ru/cpp-beginners/thread169819.html
Переделать программу с использованием классов C++
вообщем я решил перебить свою задачу и предыдущей моей темы под классы. оригинальная прога #include <iostream> #define maxn 1000 using namespace std; typedef struct { int dh,dt;
Выяснить, входит ли цифра 3 в запись числа n2 C++
Дано натуральное число n. Выяснить, входит ли цифра 3 в запись числа n2. Помогите написать программу
C++ Как сложить два числа http://www.cyberforum.ru/cpp-beginners/thread169794.html
как сложить два числа в с++
C++ Принадлежит ли начало координат треугольнику с вершинами Даны действительные числа x1, x2, x3, y1, y2, y3. Принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3)? #include <iostream> int main() { float... подробнее

Показать сообщение отдельно
Soft
4 / 4 / 1
Регистрация: 20.09.2010
Сообщений: 102

Вывод результата в дочернем потоке - C++

27.09.2010, 18:31. Просмотров 260. Ответов 0
Метки (Все метки)

Имеется программа которая вычисляет три суммы для i, j, k. Программа разбита на два потока. Главный и дочерний. Нужно вывести результат вычислений в главном потоке. Посмотрите пожалуйста код, правильно ли я сделал ? Нужно обязательно использовать семафоры при выводе результата в дочернем потоке.
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
#include <iostream>
#include <pthread.h>
#include <semaphore.h>
#include <conio.h>
int S=0; 
int i;
int j;
int k; 
sem_t sem_out,sem_inpi,sem_inpj,sem_inpk;
void * func_first(void * args)
{
 
for (i=1; i <=8; i++) 
{
S +=i+1;
sem_post (&sem_inpi); 
}
for (j=4; j <=12; j++)
{
S+=j;
sem_post (&sem_inpj);
}
std::cout<<"S=" <<S;
sem_wait(&sem_out);
return NULL;
}
int main (void)
{
sem_init (&sem_out,0,0);
pthread_t first; 
pthread_create(&first,NULL,func_first,NULL); 
 
for (k=5; k<=20; k++) 
{
S += k*(2*k-1);
sem_wait(&sem_inpk); 
sem_post(&sem_out);
}
pthread_join(first,NULL); 
 getch();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru