Форум: "WinAPI";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизCreateThread-совместное использование кода Найти похожие ветки
← →
rimd (2005-01-30 12:28) [0]Возникла проблемма при использовании CreateThread, в качестве стартового адреса указал адрес функции, но проблемма в том, что нужно запустить несколько НИТЕЙ, которые используют одну и ту же функцию. Как избежать совместного использования локальных переменных этой функции?
← →
default © (2005-01-30 12:31) [1]у каждого потока есть своя локальная память до которой другим потокам нет доступа
так вот локальные переменные размещаются как раз в такой памяти
← →
GuAV © (2005-01-30 12:42) [2]... и эта самая локальная память называется "стэк потока".
← →
Максим (2005-01-30 12:42) [3]Тогда как объяснить:
function ThreadProc(lpVoid:Cardinal):Cardinal
var
peremen:Cardinal;
begin
// Какой-то код
end;
for i:=0 to n do
begin
CreateThread(nil,0,@ThreadProc,nil,0,TPData[i].id);
//сдесь ждем к примеру пол секунды
end;
Первый поток (i=0) изменяет переменную как ему надо, а последующие потоки используют эту переменную в своих целя, но как-то странно получается, что они все равны этой переменной.
Я же не просто так вопрос поднял! Реальная проблемма...
← →
GuAV © (2005-01-30 12:44) [4]
> Первый поток (i=0) изменяет переменную как ему надо, а
> последующие потоки используют эту переменную в своих
> целя
Эта переменная своя для каждого потока, именно потому что она локальная.
← →
default © (2005-01-30 12:45) [5]в каких целях?
у них она своя
← →
Максим (2005-01-30 12:54) [6]Это конечно здорово, что у каждого потока свой стек, но результат на лицо...
← →
default © (2005-01-30 12:58) [7]потоки взяли переменную на поруки:)
← →
Максим (2005-01-30 13:09) [8]Это точно
← →
Cobalt © (2005-01-30 14:28) [9]2 Максим
А у тебя, случаем, переменная не указана, как константа с начальным значением?
← →
Максим (2005-01-30 17:42) [10]неа
← →
Cobalt © (2005-01-30 19:30) [11]Вот так вот:
function ThreadProc(lpVoid:PCardinal):Longword;stdcall;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c