потоки

Тема в разделе "Delphi - Система", создана пользователем Nehemian, 21 окт 2010.

  1. Nehemian

    Nehemian Гость

    Дяди и Тети помогите разобраться с потоками: Создать несколько потоков (количество можно вводить с клавиатуры). Вывести их в обратном порядке. Потоки создаются с помощью оператора createthread.

    Помогите
     
  2. Nehemian

    Nehemian Гость

    И ??? я этих инструкции начитался уже(((
     
  3. Nehemian

    Nehemian Гость

    я наваял какую-то хрень, знать бы что это все делает(((
    Код (Delphi):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    n,f,i:integer;
    ThreadHandle: THandle;
    ID:DWord;

    implementation

    procedure Inkrement(var n:integer);
    var r:integer;
    begin
    for r:=n to n+n do
    begin

    n:=n+1;
    end;
    end;

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    n:=strtoint(edit1.text);
    f:=strtoint(edit2.Text);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    //memo1.SelText:=inttostr(Inkrement(n));
    ResumeThread(ThreadHandle);
    ThreadHandle:=createthread(nil,0,@Inkrement,@n,CREATE_SUSPENDED,ID);
    //ThreadHandle.Terminate ;
    //TerminateThread(ThreadHandle);
    //ThreadHandle.free;

    suspendthread(ThreadHandle);
    for i:=1 to f do
    memo1.SelText:=floattostr(createthread(nil,0,@Inkrement,nil,CREATE_SUSPENDED,ID));

    for i:=f downto 1 do
    memo2.SelText:=floattostr(createthread(nil,0,@Inkrement,nil,0,ID));


    end;
    End.
     
  4. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Конкретно ваша хрень делает хрень.
     
  5. Nehemian

    Nehemian Гость

    эт самый полный ответ)))
     
  6. Nehemian

    Nehemian Гость

    Так, свой последний вариант я опускаю, он плохой, вот который рабочий, но надо на него поставивть Mutex или семафор помогите

    Код (Delphi):
    program Project2;

    {$APPTYPE CONSOLE}

    uses
    SysUtils,
    Windows;

    var n,t,Ed,RE:integer;
    Thred:array[0..255] of Thandle;
    ID:Dword;

    procedure Sed;
    var f,i:integer;
    begin
    for i:=0 to 4 do
    begin
    f:=f+5+ed;
    writeln(f);
    end;
    end;

    begin
    write('Kol-vo Potokov ');
    n:=strtoint(paramstr(1));
    writeln(n);
    for ed:=1 to n do begin
    Thred[ed]:=createthread(nil,0,@Sed,nil,CREATE_SUSPENDED,ID);
    //CreateMutex(nil,true,Thred[ed]);
    //waitforsingleobject(Thred[ed],1000);

    end;
    //readln;

    //writeln('Obratnoe Naprovlenie');
    readln;
    for ed:=n downto 1 do
    begin
    ResumeThread(Thred[ed]);
    CreateMutex(nil,true,nil);
    // Thred[ed]:=createthread(nil,0,@Sed,nil,0,ID);
    waitforsingleobject(Thred[ed],1000);
    end;


    readln;
    end.
     
Загрузка...
Похожие Темы - потоки
  1. Mady
    Ответов:
    3
    Просмотров:
    1.475
  2. 203
    Ответов:
    4
    Просмотров:
    1.751
  3. Senset
    Ответов:
    0
    Просмотров:
    2.330

Поделиться этой страницей