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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2011, 19:50   #1
Алма
Новичок
Джуниор
 
Регистрация: 23.01.2011
Сообщений: 4
По умолчанию параллельные потоки

Здравствуйте!Помогите пожалуйста в решении задачи.

"На любом языке программирования написать программу, которая параллельно выводит в одну консоль (в один терминал) символы '+' и '-'.
Более точно: создать с помощью инструментов программирования ситуацию, когда в операционной системе одновременно (в разных потоках/нитях/тредах/процессах) выполняются 2 программных кода, один из которых выводит в окно терминала символы + (плюс), а другой -(минус).
При этом в окне терминала будет отображаться что-то похожее на это:
----++++----++++---++-+++----++-------++++----+++-
Задача заключается не в выводе плюсов и минусов. Задача состоит в создании двух параллельно работающих потоков (или процессов) с общим ресурсом (файлом) для вывода результата. То, в каком порядке операционная система будет давать этим потокам "право вывести на экран свой знак" - это уже проблема операционной системы."
Алма вне форума Ответить с цитированием
Старый 23.01.2011, 20:20   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
program
  conPM;

{$APPTYPE CONSOLE}

uses
  Windows, Classes;

type
  myThread = class(TThread)
  private
    f_char: char;
    f_shouldStop: boolean;
  protected
    procedure execute(); override;
  public
    constructor create(c: char);
    procedure BeforeDestruction(); override;
  end;

{ myThread }

// --  --
constructor myThread.create(c: char);
begin
  f_char := c;
  //
  inherited create(false);
end;

// --  --
procedure myThread.execute();
begin
  while (not f_shouldStop) do begin
    //
    write(f_char);
    Sleep(100);
  end;
end;

// --  --
procedure myThread.BeforeDestruction();
begin
  f_shouldStop := true;
  //
  inherited;
end;


// -- main --

begin
  writeln('Press Enter to stop');
  //
  with (myThread.create('+')) do begin
    with (myThread.create('-')) do begin
      //
      ReadLn;
      //
      Free();
    end;
    Free();
  end;
end.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 23.01.2011, 20:33   #3
Алма
Новичок
Джуниор
 
Регистрация: 23.01.2011
Сообщений: 4
По умолчанию

спасибо огромное!а это на каком языке?=)
Алма вне форума Ответить с цитированием
Старый 23.01.2011, 20:41   #4
Алма
Новичок
Джуниор
 
Регистрация: 23.01.2011
Сообщений: 4
По умолчанию

почему то подумала что паскаль но не находит модуль windows
Алма вне форума Ответить с цитированием
Старый 23.01.2011, 20:55   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Это Дельфи.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 23.01.2011, 21:15   #6
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
Сообщение от Алма Посмотреть сообщение
При этом в окне терминала будет отображаться что-то похожее на это:
----++++----++++---++-+++----++-------++++----+++-
Код на PureBasic
Код:
Procedure Thread(*s)
  String.s=PeekS(*s,1)
  Repeat
    Print(String)
    Delay(Random(100))
  ForEver
EndProcedure

If OpenConsole()
  CreateThread(@Thread(), @"+")
  CreateThread(@Thread(), @"-")
  Input()
EndIf
Скомпилированный исполняемый файл в архиве
Вложения
Тип файла: rar Console.rar (3.2 Кб, 10 просмотров)
*PB* вне форума Ответить с цитированием
Старый 23.01.2011, 22:09   #7
Алма
Новичок
Джуниор
 
Регистрация: 23.01.2011
Сообщений: 4
По умолчанию

Спасибо,это решение выглядит намного проще,но такое к сожалению в нашей группе уже было=(Поэтому его я сдать не смогу=(
Алма вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параллельные вычислений Иллидан Общие вопросы C/C++ 1 22.11.2010 13:07
Параллельные потоки посредством MPI J B. G Общие вопросы C/C++ 1 08.11.2010 22:08
Параллельные обращения к mysql sunnmas БД в Delphi 1 12.10.2009 22:07