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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация с главным потоком 
:(
    Опции темы
eXa
Дата 17.12.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



H! 
Cуда не посылайте http://forum.vingrad.ru/topic-60076.html, обчитался уже=)
Как синхронизировать поток с другим потоком понятно, а как синхронизировать поток с главным потоком непонятно, неподскажите?
Поток состоит у меня из одной процедуры, главный поток берет значенния 2ух переменных  из отдельного потока, эти значения используется в 2ух процедурах главного потока, причём в разных, как сделать синхронизацию? Было бы замечательно, если ещё с примерами кода покажите мне реализацию синхронизации


Это сообщение отредактировал(а) eXa - 17.12.2006, 23:52
PM MAIL   Вверх
Albinos_x
Дата 18.12.2006, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



используй критические секции...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Alexeis
Дата 18.12.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



eXa, возможно переменные объявленные как threadvar
Цитата

Sometimes, however, you may want to use variables that are global to all the routines running in your thread, but not shared with other instances of the same thread class. You can do this by declaring thread-local variables. Make a variable thread-local by declaring it in a threadvar section. For example,
 threadvar
x : integer;
declares an integer type variable that is private to each thread in the application, but global within each thread.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Romikgy
Дата 18.12.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(eXa @  17.12.2006,  22:51 Найти цитируемый пост)
Cуда не посылайте http://forum.vingrad.ru/topic-60076.html, обчитался уже=)

А сюда можно ?
http://forum.vingrad.ru/topic-127140.html


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ВоВеЦ
Дата 18.12.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



alexeis1 объявил, ничё хорошего не вышло из этого, завершилось всё крушением проги. С критическими секциями не всё понятно, я уверен мне очень помог бы пример синхронизации при моих условиях:
Цитата

Поток состоит у меня из одной процедуры, главный поток берет значенния 2ух переменных  из отдельного потока, эти значения используется в 2ух процедурах главного потока, причём в разных, как сделать синхронизацию? Было бы замечательно, если ещё с примерами кода покажите мне реализацию синхронизации

Что делают процедуры не важно, с меня +  smile 

---------
эт я eXa =)



Это сообщение отредактировал(а) ВоВеЦ - 18.12.2006, 18:31
PM MAIL   Вверх
eXa
Дата 18.12.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Насчёт этой темы http://forum.vingrad.ru/topic-127140.html, сделал всё как по предпоследнему посту, но получается следующее  
procedure TForm1.TempProc выполняется у меня только олин раз, хотя там стоит цикл for to do. Почему так и как это исправить?


Это сообщение отредактировал(а) eXa - 18.12.2006, 20:14
PM MAIL   Вверх
Sunvas
Дата 18.12.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



eXa, Ну могу я тебе показать как решил ту проблемму. Смотри:
Код

unit Unit1;    
interface    
uses    
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    
  Dialogs, StdCtrls;    
type    
  TForm1 = class(TForm)    
    Button1: TButton;    
    Button2: TButton;    
    procedure Button2Click(Sender: TObject);    
    procedure Button1Click(Sender: TObject);    
  private    
    { Private declarations }    
  public    
    { Public declarations }    
  end;    
  procedure thred;stdcall;    
var    
  Form1: TForm1;    
  m:word;    
implementation    
var    
potok,id:cardinal;    
procedure thred;    
begin    
while true do    
begin    
sleep(200);    
inc(m);    
if m=10 then tthread.synchronize(nil,form1.Button2.Click);
end;    
end;    
{$R *.dfm}    
procedure TForm1.Button2Click(Sender: TObject);    
begin    
showmessage('Закрываюсь!');    
terminatethread(potok,0);    
close;    
end;    
procedure TForm1.Button1Click(Sender: TObject);    
begin    
m:=0;    
potok:=createthread(nil,128,@thred,nil,0,id);    
end;    
end.



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
eXa
Дата 19.12.2006, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Sunvas спасибо конешно, но тут ты ничего нового не показал, просто получается не пойми чё, поток каторый нужно запустить привязан к tform1, его можно только синхронизировать, запустить в потоке его у меня не получается. Если есть желанние помочь то просто покажите как синхронизировать с классом tthread в моём случии, ещё раз цитирую навсякий случий
Цитата

Поток состоит у меня из одной процедуры, главный поток берет значенния 2ух переменных  из отдельного потока, эти значения используется в 2ух процедурах главного потока, причём в разных, как сделать синхронизацию? Было бы замечательно, если ещё с примерами кода покажите мне реализацию синхронизации

PM MAIL   Вверх
dumb
Дата 19.12.2006, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(ВоВеЦ @  18.12.2006,  18:28 Найти цитируемый пост)
Что делают процедуры не важно

параноидальное ощущение важности и секретности своего кода вкупе с неспособностью объяснить суть проблемы дают предсказуемый результат: пару попыток угадывания с последующим забиванием на топик.

"поток", "главный поток", "отдельный поток"...
Цитата(eXa @  17.12.2006,  23:51 Найти цитируемый пост)
Cуда не посылайте http://forum.vingrad.ru/topic-60076.html, обчитался уже

плохо читал.
PM MAIL   Вверх
eXa
Дата 19.12.2006, 03:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
параноидальное ощущение важности и секретности своего кода вкупе с неспособностью объяснить суть проблемы дают предсказуемый результат: пару попыток угадывания с последующим забиванием на топик.


Так я имел ввиду не то что эти процедуры нельзя показывать, а просто показать пример в катором, в процедурах произвадились самые элементарные действия  smile  На самом деле не важно, чтоб помочь то..

Цитата

плохо читал.


Прочитать не сложно то, а понять... Месяц назад для меня также были не понятны сами потоки, как ща их синхронизация, ессно вам ща наверно думается чё там сложного то, как мне будет думаться когда увижу вопрос "как реализовать потоки?" Взял, прочитал, накодил. А на самом деле это край для невтыкающих. А потоки я понял мгновенно не после того как сотый раз про них прочитал, а после того как мне показали пример их реализации с моими условиями. Ну вы поняли к чему я smile  Для тех кто не понял, я не прошу решать мою проблему, а просто прошу пример с условиями каторые описал не один раз в этой теме, если не лень помочь за спасибо и "+" то жду ваш пост smile 

Это сообщение отредактировал(а) eXa - 19.12.2006, 04:06
PM MAIL   Вверх
Romikgy
Дата 19.12.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(ВоВеЦ @  18.12.2006,  17:28 Найти цитируемый пост)
Что делают процедуры не важно, с меня +

Цитата(eXa @  19.12.2006,  02:55 Найти цитируемый пост)
если не лень помочь за спасибо и "+" то жду ваш пост

лично мне после таких постов стало лень 
PS типа нате плюс только сделайте, имхо это уже в ЦП


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 20.12.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



воть посмотри


Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  thread.rar 163,08 Kb


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
eXa
Дата 21.12.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасиб!
PM MAIL   Вверх
eXa
Дата 22.12.2006, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если надо синхронизировать с функцией главной нити, что делать? Как не пытался, не вяжется и всё. И вообще с синхронизацией этой чудеса творятся, если ставлю значение цикла продедуры главной нити с каторой синхронизирую от 0 до 1 то цикл отдельной нити нормально работает, если ставлю <1 то цикл отдельной нити зацикливается на 0, плюс к этому даже если значение от 0 до 1 то, то цикл нити значение 0 повторяет 2 раза, путаница вообщем какая та. А самое непонятное, в отдельной нити, инкримент не происходит с синхронизацией или без, от значения цикла в отдельной нити по mod. Буд разбираться...

Это сообщение отредактировал(а) eXa - 22.12.2006, 05:43
PM MAIL   Вверх
Romikgy
Дата 22.12.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(eXa @  22.12.2006,  02:47 Найти цитируемый пост)
если ставлю значение цикла продедуры главной нити с каторой синхронизирую от 0 до 1 то цикл отдельной нити нормально работает, если ставлю <1 то цикл отдельной нити зацикливается на 0, плюс к этому даже если значение от 0 до 1 то, то цикл нити значение 0 повторяет 2 раза, путаница вообщем какая та. А самое непонятное, в отдельной нити, инкримент не происходит с синхронизацией или без, от значения цикла в отдельной нити по mod. Буд разбираться...

Если честно , то я ничего не понял smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

1. Публиковать ссылки на вскрытые компоненты

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

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


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

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


 




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


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

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