purebasic.info

PureBasic forum
Текущее время: Ср июн 19, 2019 6:11 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 140 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10  След.
Автор Сообщение
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Вт дек 01, 2015 10:59 pm 
Не в сети
ассистент

Зарегистрирован: Пт май 15, 2015 5:16 am
Сообщений: 23
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
MrF писал(а):
Berck писал(а):
А под ненужной выделенной памятью подразумевается память, выделенная в основной программе, к которой обращаемся чтением в потоке?

Выделяем память для какой-то операции, когда процедура отработала с этой памятью, то память надо освободить, иначе чревато утечкой памяти.

Я так всегда и делаю - а почему pablov советует вместо этого закрывать мьютексами уже ненужную выделенную память? И что такое "открытые хэндлы"? Если же он советовал делать FreeMemory, то вообще не понятно к чему это? Я вёл речь только о нужных-ненужных мьютексах.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Вт дек 01, 2015 11:10 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
Berck писал(а):
а почему pablov советует вместо этого закрывать мьютексами уже ненужную выделенную память?

Что? :D :D

Berck писал(а):
И что такое "открытые хэндлы"?

Я так понимаю он про это:
Код:
1
OpenFile(#File, Filename$ [, Flags])


#File - открытый хендл.

Berck писал(а):
вообще не понятно к чему это?

К тому, что это типичные ошибки.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Пн дек 07, 2015 11:31 am 
Не в сети
ассистент

Зарегистрирован: Пт май 15, 2015 5:16 am
Сообщений: 23
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Как известно из справки - вся выделенная в программе память командой AllocateMemory освобождается при завершении программы. Вопросы:
1. Если AllocateMemory делать в процедуре - освобождается ли автоматически эта выделенная память при завершении процедуры?
2. Если AllocateMemory делать в потоке - освобождается ли автоматически эта выделенная память при завершении потока?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Пн дек 07, 2015 12:04 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
Berck, при завершении программы системный сборщик мусора очищает память, у пурика своего мусорщика нет, поэтому нет на оба вопроса.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Пн дек 07, 2015 12:09 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2317
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 73 раз.
Пункты репутации: 11
Нет. Нет. Надо использовать FreeMemory() для освобождения памяти. А в некоторых случаях еще и указатель на память обнулять (если в будущем будут еще выделения памяти по этому же указателю).

Цитата:
у пурика своего мусорщика нет

Нет, ну после выхода из процедуры, переменные внутри неё (и может что-нибудь подобное еще) очищается. Значит мусорщик хоть какой-то есть.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Пн дек 07, 2015 12:32 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
qpAHToMAS писал(а):
ну после выхода из процедуры, переменные внутри неё (и может что-нибудь подобное еще) очищается

В процедурах же локальные переменные, из вне к ним нет доступа. А при входе в процедуру переменные обнуляются, если их значение явно не задано. В отладчике это хорошо видно.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Пн дек 07, 2015 12:43 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11481
Благодарил (а): 4 раз.
Поблагодарили: 468 раз.
Berck писал(а):
Если AllocateMemory делать в процедуре - освобождается ли автоматически эта выделенная память при завершении процедуры?
Если не нужно динамически выделять память, то вместо функции AllocateMemory, можно использовать локальный массив необходимого размера.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Пт янв 11, 2019 6:41 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 136
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
qpAHToMAS писал(а):
Передаю в процедуру-поток простое число:
Код:
1
CreateThread(@thread(), 123)


Есть ли различия между следующими строками по приему этого числа в поток?
Код:
1
2
Procedure thread(*number)
Procedure thread(number.i)



Пётр писал(а):
В данном случае нет.


А когда надо?

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Пт янв 11, 2019 7:27 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 853
Благодарил (а): 2 раз.
Поблагодарили: 40 раз.
Пункты репутации: 9
Gregory писал(а):
qpAHToMAS писал(а):
Передаю в процедуру-поток простое число:
Код:
1
CreateThread(@thread(), 123)


Есть ли различия между следующими строками по приему этого числа в поток?
Код:
1
2
Procedure thread(*number)
Procedure thread(number.i)



Пётр писал(а):
В данном случае нет.


А когда надо?

Теоритически нет,так как число передаётся через стек.
А практически есть так как пурик компилируя может по разному обрабатывать
с *значением к примеру можно передать структуру по ссылке. :roll:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Structure r
  a.a
  b.i
  c.f
EndStructure
Global r.r
Procedure d(*r.r)
 
  *r\a=5
  *r\b=766
  *r\c=666.777
EndProcedure
d(@r)
Debug r\a
Debug r\b
Debug r\c
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Вт фев 19, 2019 9:32 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 136
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Где-то читал, что окнами надо управлять только из родительского потока.
Это к гаджетам тоже относится? :roll:

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Ср фев 20, 2019 11:13 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 853
Благодарил (а): 2 раз.
Поблагодарили: 40 раз.
Пункты репутации: 9
Gregory писал(а):
Где-то читал, что окнами надо управлять только из родительского потока.
Это к гаджетам тоже относится? :roll:

Так гаджеты это теже окна дочернии,почему окна должны быть в одном родительском потоке? :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Ср фев 20, 2019 8:07 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 136
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Сергейчик писал(а):
почему окна должны быть в одном родительском потоке?
Там писАли, что это надо для управления окнами.
Только не "быть в одном потоке", а "управляться из родительского потока (в смысле, в котором создавалось)"
Вот у меня сейчас по нажатию кнопки дизэйблются пара пунктов меню и запускается процесс (типа счётчик) во вспомогательном потоке.
По окончании процесса, эти пункты энейблются.
В Винде более-менее работает, а под Линухом энейблится только один пункт.

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Ср фев 20, 2019 9:17 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11481
Благодарил (а): 4 раз.
Поблагодарили: 468 раз.
Из потока нужно отправить сообщение. https://www.purebasic.com/documentation ... event.html
В основном потоке принять.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Чт фев 21, 2019 8:14 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 136
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
В основном потоке принять.
Тенкс, Пётр!
Т.е. всё-таки надо из родительского потока управлять.
Насколько понимаю, в/у функцию можно было бы реализовать просто через мьютексы (для передачи константы из потока в поток).

P.S.: Тут, в параллельной теме, говорил, как "мигаю светодиодом". Так там тоже меняю картинку в гаджете по таймеру из другого потока, и всё работает нормально.
Чудеса...

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Паралельные потоки
СообщениеДобавлено: Чт фев 21, 2019 10:23 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 853
Благодарил (а): 2 раз.
Поблагодарили: 40 раз.
Пункты репутации: 9
Gregory писал(а):
Пётр писал(а):
В основном потоке принять.
Тенкс, Пётр!
Т.е. всё-таки надо из родительского потока управлять.
Насколько понимаю, в/у функцию можно было бы реализовать просто через мьютексы (для передачи константы из потока в поток).

P.S.: Тут, в параллельной теме, говорил, как "мигаю светодиодом". Так там тоже меняю картинку в гаджете по таймеру из другого потока, и всё работает нормально.
Чудеса...


Видимо менять картинку и управлять сообщениями возвращаемых с гаджета не одно и тоже
тут как бы нужна наверное автономная единица с своим калбакем.? :wink:
допустим мы создаём окна в разных потоках но ведь их внутренний калбак же работает и обрабатывает сообщения? :roll:


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 140 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB