purebasic.info

PureBasic forum
Текущее время: Чт янв 17, 2019 1:41 am

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




Начать новую тему Ответить на тему  [ Сообщений: 114 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8
Автор Сообщение
 Заголовок сообщения: 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
Сообщений: 2304
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 72 раз.
Пункты репутации: 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
Сообщений: 11360
Благодарил (а): 4 раз.
Поблагодарили: 445 раз.
Berck писал(а):
Если AllocateMemory делать в процедуре - освобождается ли автоматически эта выделенная память при завершении процедуры?
Если не нужно динамически выделять память, то вместо функции AllocateMemory, можно использовать локальный массив необходимого размера.

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


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

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 111
Откуда: Санкт-Ленинград
Благодарил (а): 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
Сообщений: 707
Благодарил (а): 2 раз.
Поблагодарили: 36 раз.
Пункты репутации: 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
 



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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 13


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

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