Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 11.01.2009, 04:51   #1
_SeRGeaNT_
Новичок
Джуниор
 
Регистрация: 11.01.2009
Сообщений: 2
По умолчанию Ошибка при работе с потоками(

В общем проблема с курсовой работой(. Нужно сделать два варианта обработки файлов: последовательную и параллельную. Второй вариант отказывается работать при количестве файлов больше 4-5((, а надо чтобы с 10ю работала(. Помогите пожалуйста!(
Код:
//Задание : Переставить строки файла в обратном порядке
#include <windows.h>
#include <time.h>
#include <conio.h>
#include <iostream.h>
#include <cstring.h>
#include <fstream.h>
#include <vector>
using namespace std;
HANDLE hThread[10];   	 // дескрипторы потоков
DWORD IDThread[10];      // идентификаторы потоков
HANDLE WINAPI hSemaphore;
BOOL WINAPI cReleaseCount;
clock_t StartTime, EndTime; // Время начала и завершения обработки
DWORD ThreadProc(char *fname)
{
   char foname[30]="rez";
   vector<string> vect;
   string str;
   strcat(foname,fname);
   ifstream fin(fname);
   if(fin.fail())
   {
   cout<<"Oshibka otkritiya faila!\n";
   exit(0);
   }
   while(!fin.eof()) {
	getline(fin,str);
   vect.push_back(str);
                     }
   ofstream fout(foname);
   if(fout.fail())
   {
   cout<<"Oshibka otkritiya faila!\n";
   exit(0);
   }
  while (!vect.empty())
  {
    fout<<vect.back()<<endl;
    vect.pop_back();
  }
   fin.close();
   fout.close();
   ReleaseSemaphore(hSemaphore,1,NULL);
   return 0;
}
int main(int argc, char *argv[])
{
  int N;
  int i,k;
  N=argc-1;
  StartTime = clock();  // Запомнили время начала обработки
    	if (argc<2)
    {
  		cout << "Nedostatochno parametrov!"<<endl;
  		exit(0);
    }
    	if (argc>11)
    {
  		cout << "Slishkom mnogo failov!"<<endl;
  		exit(0);
  	 }
 for(i=argc-1; i>=1;i--)
  		for(k=1; k<=argc-1; k++)
      		if(k!=i)
         		if(strcmp(argv[i],argv[k])==0) {
         			       cout<<"Oshibka! Odinakovie imena failov!"<<endl;
                                       exit(0);
         												}
  hSemaphore=CreateSemaphore(NULL,5,5,NULL);
  for (int i=0;i<=N;i++)
      {
        WaitForSingleObject(hSemaphore,INFINITE);
	hThread[i]=CreateThread(NULL,0,ThreadProc,argv[i+1],0,&IDThread[i]);
      }
  // Ожидание завершения потоков
  WaitForMultipleObjects(N,hThread,TRUE,INFINITE);
  EndTime = clock();  // Запомнили время окончания обработки
  //Вывод продолжительности обработки и завершение программы
  cout <<"Elapsed Time " <<(EndTime-StartTime)<<" ms"<< endl;
  getch();
  return 0;
}
_SeRGeaNT_ вне форума Ответить с цитированием
Старый 11.01.2009, 12:56   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,623
По умолчанию

Вы обьявление читали? Где вопрос??? Люди, вы чего? Неужели так тяжело прочитать 10 строк текста?

Вопрос в студию, иначе - тема на замок.

ПыСы: хотя бы скажите какая ошибка.
MaTBeu вне форума Ответить с цитированием
Старый 11.01.2009, 15:50   #3
_SeRGeaNT_
Новичок
Джуниор
 
Регистрация: 11.01.2009
Сообщений: 2
По умолчанию

Вопрос: в чём может быть проблема, если однопоточная программа с последовательной обработкой работает нормально, а вот эта многопоточная выдаёт ошибку (на вложенной картинке скриншот).
Если бы я знал что это за ошибка, я бы наверное не обращался за помощью).
Изображения
Тип файла: jpg Безымянный.jpg (67.4 Кб, 141 просмотров)
_SeRGeaNT_ вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с потоками vitalik007 Общие вопросы Delphi 6 09.03.2008 10:25
Ошибка при работе с структурой Nullator Общие вопросы C/C++ 11 08.03.2008 00:52
Ошибка при работе с файлом LeoN Общие вопросы Delphi 1 07.12.2007 16:21
Ошибка при работе с БД malevich БД в Delphi 8 25.11.2007 16:10


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS