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

Реализация операций в дочернем потоке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Кликер http://www.cyberforum.ru/cpp-beginners/thread167090.html
помогите пожалуйста перевести код на с++ using System; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private int _next_btn, _score;...
C++ Как зделать чтоб программа удалила сама себя Привет всем. У меня собственно такой вопрос: Как зделать чтоб программа удалила сама себя? Я имею в виду, чтоб после запуска, приложение выполнило некие действия, а по завершении работы удалило... http://www.cyberforum.ru/cpp-beginners/thread167088.html
C++ формирование матрицы связности по списку по контактам
нужно сформировать матрицу связности, что бы потом нарисовать полный граф. функция неправильно работает...когда рисует граф, то не все рисуется... в чем ошибка?? и как можно по другому сделать??...
C++ Triangle
Given 3 positive real numbers x, y, z. Output "YES" if it is possible to construct a triangle with side lengths x, y, z. Output "NO" otherwise. Example: Input: 3 4 5 Output YES Example:...
C++ Teacher's Day http://www.cyberforum.ru/cpp-beginners/thread167069.html
Teacher’s day is celebrated each year on the first Sunday of the October. Given natural number n, that represents the number of the year. Output the date of the Teacher’s day of that year. Example:...
C++ Correct Date Даны три натуральных числа: a, b, c, которые представляют день, месяц и год некоторой даты. Вывести "yes" если данная дата корректна и "no" в другом случае. Например: Input: 32 1 1991 Ouput:... подробнее

Показать сообщение отдельно
Vexel
12 / 12 / 1
Регистрация: 18.10.2009
Сообщений: 159

Реализация операций в дочернем потоке - C++

19.09.2010, 16:28. Просмотров 304. Ответов 0
Метки (Все метки)

Помогите пожалуйста исправить ошибку, в общем нужно ввод числа N и вывод S (т.е. суммы) реализовать в дочернем потоке. Вот листинг:
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
#include <iostream>
#include <pthread.h>
#include <semaphore.h>
#include <conio.h>
int S; 
int S1;
int N;
int i;
sem_t;
sem_inp;
sem_out;
void * func_first(void * args)
{
int S1=0;
std::cout <<"vvedite N";
std::cin <<N;
sem_post(&sem_inp);
for (i=(N/2)+1; i <=N; i++) 
{
S1+=i; 
}
sem_wait (&sem_output);
S=S+S1;
std::cout<<S;
}
int main(void)
{
S=0;
sem_init(&sem_inp,0,0);
sem_init(&sem_out,0,0);
sem_wait(&sem_inp);
pthread_t first; 
pthread_create(&first,NULL,func_first,NULL); 
for (i=1; i<=N/2; i++) 
{
S+=i; 
}
pthread_join(first,NULL); 
sem_post(&sem_out);
getch();
return 0;
}
Добавлено через 9 часов 47 минут
Уточняю задание: изначально нужно было написать программу, в которой два потока: дочерний и главный вычисляют сумму от i до N. N суммы и вывод результата нужно было указать в главном потоке. Это я сделал! Теперь из этой программы нужно реализовать ввод суммы и вывод результата в дочернем потоке! Тут нужно использовать семафоры. Вот это у меня как раз не выходит. Посмотрите пожалуйста листинг и скажите что и где нужно исправить.

Добавлено через 2 часа 0 минут
Люди, вам что подсказать тяжело в чем ошибка конкретно ? Я же не прошу тут все с нуля делать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru