Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопоточное консольное приложение, делаю кросплатворменную программу 
:(
    Опции темы
Fredy314
Дата 9.9.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



делаю кросплатворменную программу на FreePascal, которая в нескольких потоках должна что-то делать.
Проблема с выводом статистики
Если потоки просто делают writeln(Номер потока+текст сообщения) //С синхронизацией само собой
все вроде работает, только строки постоянно ползут вверх вперемешку от всех потоков.
Хотел искользово crt+gotoXY чтобы каждый поток выводил в своей строке, но ничего не выводится.
без потоков gotoXY и writeln выводит все нормально и в виндовс и скомпилированое под линукс работает нормально, а если к многопоточной программе просто подключить модуль crt, то все  writeln просто выводят пустоту только курсор дергается.
Код

{$APPTYPE CONSOLE}
{$MODE objfpc}{$H+}
uses RunThread;
var Threads:array of TRunThread;
i:Integer;
begin
  setLength(Threads,10);
  for i:=0 to 9 do
    Threads[i]:=TRunThread.create(i+1);
  Threads[0].WaitFor;
WriteLn;
end.

Код

unit RunThread;
interface
{$MODE objfpc}{$H+}
uses {$IFDEF unix}cthreads, cmem, {$ENDIF}Classes, SysUtils;
type TRunThread=class(TThread)
    Y:Integer;
    procedure Execute; override;
    constructor Create(aY:Integer);
    procedure UpdateTime;
end;
implementation

constructor TRunThread.Create(aY:Integer);
  begin
    inherited Create(False);
    Y:=aY;
  end;
procedure TRunThread.Execute;
  begin
    while not Terminated do
    begin
      sleep(500+random(500));
      Synchronize(@UpdateTime);
    end;
  end;
procedure TRunThread.UpdateTime;
var s:String;
  Begin
    DateTimeToString(s, 'dd/mm/yyyyy h:m:s.z', now);
    Writeln(Y,':',s);
  end;
end.

Вот так работает, а если добавить в uses crt для unit RunThread просто перестает выводить текст на екран.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.