The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Многопоточный класс на  boost::thread"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Процессы, Треды, RPC)
Изначальное сообщение [ Отслеживать ]

"Многопоточный класс на  boost::thread"  +/
Сообщение от Azimuth (ok) on 26-Янв-11, 13:33 
Нужен класс, который будет жить в отдельном потоке, дергать свои методы, периодически, синхронно, дергать метод класса из главного потока для накопления статистики.

Пока есть только процедуры, что есть криво

CTimeStat timeStat;

int main ( int argc, char *argv[] )
{
  for ( int i = 0; i < atoi ( argv[2] ); i++ )
  {
    boost::thread* t = new boost::thread ( work, data, true );
    th_grp.add_thread ( t );
  }
  th_grp.join_all();
}

void work ( char data, bool cycle )
{
    if ( login() )
    {
       string name = "get_data";

       int stampId = timeStat.putStart(name);
       getData();
       timeStat.putEnd(stampId);
       logout();
    }
}

class CTimeStat // Накопление статистики
{
   putStart() // Должны быть синхронные
   putEnd()   //       --//--//--
};

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Многопоточный класс на  boost::thread"  +/
Сообщение от Azimuth (ok) on 26-Янв-11, 14:05 
Сам спросил, сам отвечаю:

// File:   main.cpp

#include <cstdlib>
#include "std.h"
#include "ThreadClass.h"

int main(int argc, char** argv) {

    ThreadClass tc;
    boost::thread thread(&ThreadClass::Run, &tc);
    thread.join();

    return 0;
}

=====================================
// File:   std.h
#pragma once

#include <stdio.h>
#include <iostream>
#include <boost/thread.hpp>

    using std::string;
    using std::cout;
    using std::endl;

=====================================
// File:   ThreadClass.h

#pragma once

class ThreadClass {
    public:
        ThreadClass(); // Constructor
        ~ThreadClass(); // Destructor

        void login();
        void logout();
        void Run();
};

=====================================
// File:   ThreadClass.cpp"
#include "std.h"
#include "ThreadClass.h"

ThreadClass::ThreadClass() { } // Constructor
ThreadClass::~ThreadClass() { } // Destructor

void ThreadClass::Run() {
    login();
    logout();
}

void ThreadClass::login()
{
    cout << "login" << endl;
}

void ThreadClass::logout()
{
    cout << "logout" << endl;
}

Идея вязта здесь: http://ubuntuforums.org/showthread.php?t=201776
Буду дорабатывать.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру