Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2010, 19:21   #1
strangegirl
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 19
Восклицание Параллельный вывод

Помогите,пожалуйста,создать программу,которая бы запускала в себе 2 потока: один выводит + , другой -
В итоге либо в файл, либо в терминал, либо в какое-то другое устройство вывода должно быть выведено что-то типа +------++++----+++++----++++
strangegirl вне форума Ответить с цитированием
Старый 04.11.2010, 21:39   #2
sergey.d
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 98
По умолчанию

Если компилятор поддерживает OpenMP, то самый простой вариант -- использовать это. Например:

Код:
#pragma omp parallel sections
{
    #pragma omp section
    { while(true) printf("+"); }
    #pragma omp section
    { while(true) printf("-"); }
}
Не забудь включить поддержку OpenMP. Как именно это сделать, зависит от среды и компилятора.
sergey.d вне форума Ответить с цитированием
Старый 04.11.2010, 22:10   #3
vr83
Пользователь
 
Регистрация: 08.05.2010
Сообщений: 12
По умолчанию

Вот так можно, через таймер.

Код:
procedure TForm1.timer1Timer(Sender: TObject);
var
  Stream1, Stream2: TFileStream;
  Buf1, Buf2: array[0..10] of Char;
  i: Integer;
begin
  Randomize;
  for i := 0 to 10 do
    begin
    Buf1[i] := '+';
    Buf2[i] := '-';
    end;

    try
    Stream1 := TFileStream.Create('c:\pm.dat', fmOpenReadWrite);
    Stream1.Seek(0, soFromEnd);
    Stream1.Write(Buf1, (1 + Random(10)));
    finally
    Stream1.Free;
    end;

    try
    Stream2 := TFileStream.Create('c:\pm.dat', fmOpenReadWrite);
    Stream2.Seek(0, soFromEnd);
    Stream2.Write(Buf2, (1 + Random(10)));
    finally
    Stream2.Free;
    end;

end;
Или можно совместно использовать файл.

Код:
procedure TForm1.button1Click(Sender: TObject);
var
  Stream1, Stream2: TFileStream;
  Buf1, Buf2: array[0..10] of Char;
  Buf3: array[0..100000] of Char;
  i: Integer;
begin
  Randomize;
  for i := 0 to 10 do
    begin
    Buf1[i] := '+';
    Buf2[i] := '-';
    end;

  try
  Stream1 := TFileStream.Create('c:\pm.dat', fmOpenReadWrite+fmShareDenyNone);
  Stream1.Seek(0, soFromEnd);
  Stream1.Write(Buf1, (1 + Random(10)));
    try
    Stream2 := TFileStream.Create('c:\pm.dat', fmOpenReadWrite+fmShareDenyNone);
    Stream2.Seek(0, soFromEnd);
    Stream2.Write(Buf2, (1 + Random(10)));
    finally
    Stream2.Free;
    end;
    Stream1.Seek(0, soFromBeginning);
    Stream1.Read(Buf3, Stream1.Size);
    memo1.Lines.Add(StrPas(Buf3));
  finally
  Stream1.Free;
  end;
end;

Последний раз редактировалось Stilet; 05.11.2010 в 13:21.
vr83 вне форума Ответить с цитированием
Старый 05.11.2010, 12:32   #4
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Код на PureBasic.
Используются 2 параллельных потока - данные выводятся в консоль.
Код:
Procedure Thread(*x)
  Symbol.s=PeekS(*x)
  Repeat
    Print(Symbol)
    Delay(Random(20)+2)
  ForEver
EndProcedure

OpenConsole()
CreateThread(@Thread(),@"+")
CreateThread(@Thread(),@"-")
Input()
Скомпилированый файл во вложении.
Вложения
Тип файла: rar Console.rar (3.5 Кб, 12 просмотров)
*PB* вне форума Ответить с цитированием
Старый 05.11.2010, 18:13   #5
strangegirl
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 19
По умолчанию

спасибо)
vr83, у меня возникает ошибка при компиляции

Unclared identifier: 'memo1'
strangegirl вне форума Ответить с цитированием
Старый 05.11.2010, 20:27   #6
vr83
Пользователь
 
Регистрация: 08.05.2010
Сообщений: 12
По умолчанию

это потому что на форме у вас нет мемо .
И еще вам нужно создать pm.dat
vr83 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параллельный запуск двух потоков Sam Gold Общие вопросы C/C++ 0 30.04.2010 20:56
Параллельный алгоритм прогонки Zhadra Общие вопросы Delphi 4 23.04.2010 08:46
Параллельный алгоритм быстрого преобразования Фурье (fft) для C# oleeg Помощь студентам 6 19.02.2010 13:19
Курсовая работа (параллельный алгоритм) MaxDDT Фриланс 1 05.01.2010 18:56
Вывод C heart Общие вопросы C/C++ 6 17.08.2009 11:29