Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под *nix > C++ на Unix
Перезагрузить страницу ПОМОГИТЕ ПОЖАЛУЙСТА ПРОЧИТАТЬ ПРОГРАММУ, НАПИСАТЬ ПСЕВДО-КОД И ОБЪЯСНИТЬ ЕЁ!!!ПОТОКИ!
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
jonikmmm jonikmmm вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.12.2011
Question ПОМОГИТЕ ПОЖАЛУЙСТА ПРОЧИТАТЬ ПРОГРАММУ, НАПИСАТЬ ПСЕВДО-КОД И ОБЪЯСНИТЬ ЕЁ!!!ПОТОКИ! - 04.12.2011, 16:57

Здравствуйте! Пожалуйста помогите разобраться с программой дубовиком.... мне нужно сдавать лабораторную, а я не знаю, что там и как.... плачу 200 рублей за успешно-сданную лабораторную))) Нужно либо псевдо код написать либо в комментариях что и как работает, а еще потом по телефону объяснить или по скайпу...буду очень благодарен! Прикрепляю код:

cpp Код:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QString>

#include <pthread.h>
#include <unistd.h>
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <ctime>
#include <cstdlib>
#include <cerrno>
#include <cstring>

using namespace std;
namespace{


vector<string> names;
vector<pthread_t> thr1, thr2;
pthread_t main;
QString ostring;

struct Info{
    int NThreads;
    class Widget *that;
}myInfo;


class make_string{
private:
        std::ostringstream buffer;
public:
        template<typename T>
        make_string& operator << (T const &datum){
                buffer<<datum;
                return *this;
        }
        operator std::string() const{
                return buffer.str();
        }

};

void postMessage(const string& message){
    QString result = ostring+message.c_str();
    ostring=result;
    cout<<message.c_str();
}

void postError(pthread_t thread, int result){
    if(result) postMessage(make_string()<<"Thread "<<thread<<" exit with an error: "<<strerror(result));
}

void *thread1(void *p)
{
        string name = make_string()<<pthread_self();
        int ip = *(reinterpret_cast<int*>(p));
        names[ip] = name;
        ofstream out(name.c_str());
        int x = rand()%100+1;
        for (int i = 0; i<x; i++) out << "s";
        out.close();
        time_t timer = time(0);
        string message = make_string()<<"Hi, I am odd thread with ID = "<<static_cast<unsigned int>(pthread_self())<<", PID = "<< getpid()<<", PPID = "<<getppid()<<", TIME = "<< ctime(&timer)<<"FileName = "<<name<<", Number of written symbols = "<<x<<"\n\n";
        postMessage(message);
        return NULL;
}

void *thread2(void *p)
{
        int ip = *(reinterpret_cast<int*>(p));
        pthread_join(thr1[ip], NULL);
        ifstream in(names[ip].c_str());
        int a = 0;
        char temp;
        while(!in.eof())
        {
                in >> temp;
                a++;
        }
        in.close();
        time_t timer = time(0);
        string message = make_string()<<"Hi, I am even thread with ID = "<<static_cast<unsigned int>(pthread_self())<<", PID = "<< getpid()<<", PPID = "<<getppid()<<", TIME = "<< ctime(&timer)<<"FileName = "<<names[ip]<<", Number of read symbols = "<<a<<"\n\n";
        postMessage(message);
        return NULL;
}
void * anotherMain(void *)
{
        ostring="";
        int NPairs = myInfo.NThreads;
        thr1.resize(NPairs);
        thr2.resize(NPairs);
        names.resize(NPairs);
        for (int i = 0; i<NPairs; i++)
        {
                if(pthread_create (&thr1[i], NULL, thread1, &i)<0)
                {
                        postMessage(make_string()<<"Cannot create odd thread\n");
                        printf("Cannot create odd thread");
                        continue;
                }
                if(pthread_create (&thr2[i], NULL, thread2, &i)<0){
                        postMessage(make_string()<<"Cannot create even thread\n");
                        pthread_join(thr1[i], NULL);
                }else{
                        pthread_join(thr2[i],NULL);
                }
        }
        return NULL;
}
}
Widget::Widget(QWidget *parent)
    : QWidget(parent), ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->input->setInputMask("9;");
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_startButton_clicked(){
    bool a;
    int NThreads =ui->input->text().toInt(&a);

    if(a){
        myInfo.NThreads=NThreads;
        myInfo.that=this;
        pthread_create(&main, NULL, anotherMain,NULL);
        pthread_join(main, NULL);
        postMessage(ostring);
    }
}
void Widget::postMessage(const QString& message){
    QString output = ui->output->toPlainText()+message;
    ui->output->setPlainText(output);
}
void Widget::on_clearButton_clicked(){
    ui->output->clear();
}


Результаты работы программы

Hi, I am odd thread with ID = 3067411312, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3067411312, Number of written symbols = 6

Hi, I am even thread with ID = 3059018608, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3067411312, Number of read symbols = 7

Hi, I am odd thread with ID = 3059018608, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3059018608, Number of written symbols = 52

Hi, I am even thread with ID = 3067411312, PID = 2418, PPID = 2385, TIME = Wed Mar 24 02:04:26 2010
FileName = 3059018608, Number of read symbols = 53
Можете либо позвонить на +79243118379, если сможете помочь, либо написать на jon_krivonogov@mail.ru...

Последний раз редактировалось Alexiski; 05.12.2011 в 10:00 Причина: Используем форматирование
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста написать программу :* Tatka_Axe Pascal 0 02.03.2012 12:59
Помогите пожалуйста написать программу на Delphi Natal'ja Delphi 2 28.12.2011 16:40
ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ ПАСКАЛЬ ПОЖАЛУЙСТА otsup Pascal 1 27.12.2011 06:15
Помогите, пожалуйста, написать программу для экспертной системы! belochka21 Задания за деньги 2 19.12.2011 17:15
Помогите, пожалуйста, написать программу для экспертной системы! belochka21 Задания за деньги 0 19.12.2011 01:57
помогите пожалуйста написать программу!! AlyonaZvereva Любые вопросы от новичков 0 03.12.2011 14:57
Не могу написать программу. Помогите пожалуйста! Вероника91 Pascal 0 13.11.2011 02:52
помогите написать программу поиска элемента,пожалуйста Nadin Pascal 1 06.11.2011 16:21
Помогите пожалуйста написать программу.очень надо дарья БН Вопросы начинающих программистов 0 15.05.2011 21:05
Помогите пожалуйста написать программу studentka) Prolog 9 12.04.2011 04:30
Помогите пожалуйста написать программу на Турбо прологе Angel&#39;s Prolog 1 20.11.2008 15:39
Пожалуйста помогите написать программу mev Pascal 1 04.04.2008 06:24



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов