Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 8 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 02.06.2005
Откуда: Khabarovsk
Доброго времени суток.
Собственно есть программа, формирует url'ы и скачивает полученные данные (Типа офлайн браузера). Работа осуществляется через стандартный HTTP компонент Borland'a. Только дело в том, что когда информация, полученная по запросу скачивается канал загружен ... ну ... процентов на пять.

Собственно вопрос. Как можно реализовать многопоточность, чтоб пользователь мог сам установить количество потоков в программе, в зависимости от ширины канала?

PS Прошу не сильно не пинать, ибо это мой первый опыт работы с многопоточностью. Планируется использовать стандартный компонент Borland'a для организации многопоточности.



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
spmn так ты именно вопрос конкретизируй, что не получается-то? Открой MSDN, посмотри, что такое CreateThread, потом создавай сколько тебе угодно потоков, а дескрипторы их храни в векторе допустим.

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Ты сперва поиграйся с обычными потоками. Научись создавать их. Синхронихировать работу программы и потоков. А потом все легко пойдет.
Кстати Borland C++ и какой именно?


 

Member
Статус: Не в сети
Регистрация: 02.06.2005
Откуда: Khabarovsk
Вообщем мне не понятно как сделать, чтоб пользователь сам мог указать небходимое число потоков.

Ray Adams
Borland C++ 5.0


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
spmn так конкретизируй, что именно. Не ясно, что тебе непонятно. Как организовать ввод числа чтоль? :)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 02.06.2005
Откуда: Khabarovsk
Daemon
:) Нет ввод числа это понятно :) Просто все что я читал о потоках описывает создание одного и работы с ним. А мне не ясно как создать много одинаковых потоков. Например пользователь указал 10 потоков, значит будет создано 10 потоков, указал 100, значит 100 потоков. Это и не ясно.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
spmn ну вот небольшой пример:
Код:
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <windows.h>

DWORD __stdcall ThreadProc(LPVOID lpThreadParameter)
{
   for(;;)
   {
      std::cout << "Hello from thread, thread id: " << GetCurrentThreadId() << std::endl;
      Sleep(1000);
   }
   return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
   std::vector<DWORD> threads;
   const int thrNum = 10;

   for(int i = 0; i < thrNum; ++i)
   {
      DWORD threadid = 0;
      if (CreateThread(NULL, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(&ThreadProc), NULL, 0, &threadid)) threads.push_back(threadid);
   }
   
   Sleep(10000);

   for(int i = 0; i < thrNum; ++i)
      TerminateThread(static_cast<HANDLE>(&threads[i]), 0);
   return 0;
}


Будут вопросы - задавай, только учти, здесь я не выполняю синхронизации, допустим при доступе к тому же cout.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 02.06.2005
Откуда: Khabarovsk
Daemon
спасибо, буду разбиратся.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 8 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


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

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan