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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2012, 02:53   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию Потоки ждут условие

Доброго времини суток, возник вопрос такого плана. Из потоков я посылаю сообщение форме, что бы обратится к к компанентам/процедурам/функциям.Т.к. их должен обрабатывать только один поток я выстовил булену и делаю проверку, но при запуски от 2х потоков будит от этого выгода в производительности программы/системы?И как правельней дождаться условий для продолжений?
Код:
unit Unit1;

interface

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

type
TNewThread = class(TThread)
  private
//
  protected
    procedure Execute; override;
  end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure WndProc(var Msg: TMessage); override;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Thread:array[0..10]of TNewThread;
  bob: Boolean = false;
implementation

{$R *.dfm}


procedure TForm1.WndProc(var Msg: TMessage);
begin
  inherited;
if Msg.Msg=wm_user+20 and bob = false then
begin
//
end
else
begin
//как ожидать?
end;
//
if Msg.Msg=wm_user+30 and bob = false then
begin
//
end
else
begin
//
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  for i:=0 to N do
  begin
    Thread[i] := TNewThread.Create(true);
    Thread[i].Priority := tpidle;
    Thread[i].FreeOnTerminate := true;
    Thread[i].Resume;
  end;


procedure TNewThread.Execute;
begin
//
SendMessage(***,WM_USER+20,0,0);
if ** then
SendMessage(***,WM_USER+30,0,0);
end;
bulldog5293 вне форума Ответить с цитированием
Старый 25.11.2012, 10:59   #2
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

SendMessage сама по себе синхронная функия, никакие дополнительные телодвижения для организации"ожидания" при ее использовании не нужны.
xoodoo вне форума Ответить с цитированием
Старый 25.11.2012, 13:29   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Из потоков я посылаю сообщение форме, что бы обратится к к компанентам/процедурам/функциям.
А, стесняюсь спросить, зачем? какова конечная цель данной стратегии?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки и C lindstorm Общие вопросы C/C++ 1 02.11.2011 17:18
потоки sergei64_89 Помощь студентам 2 20.10.2010 02:08
Потоки _PROGRAMM_ Помощь студентам 9 26.09.2010 19:27
потоки пауэрлифтинг Общие вопросы Delphi 5 23.05.2010 14:19
Какие вирусы ждут вас/нас в 2007 году Virtson Обсуждение статей 9 19.03.2007 05:28