Многопоток простой пример.

KirillOFF

Client
Регистрация
18.12.2010
Сообщения
1 127
Благодарностей
517
Баллы
113
Другого варианта я не вижу. На видео не видно какой проект запускаете. А судя по вашим топикам, возможно шутите здесь вы :-)
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Думал может с алертами что, ну сделал вообщем привязку к открытию гугла типа http://google.com/?{ тут магический счетчик } Ну что... вылетает 1,1 потом 2,3 и пошло нормально !
Хорошо завтра сделаю видео как я запуская проэкт прям из папочки, даже оформлю его в стиле зеннопостер открой на ютубе Chanel Bug Tv и буду вылажить по одному два в день.
Шутить типа. Делать мне больше нечего как шутить, убить 2, с половиной дня на какие то потоки которые должны работать нормально.
Просто это получается издевательство, ладно там (другой софт) с пулеметом косит все и всех, а как то то говорил зенно типа снайперской винтовки :-) ну что то я начинаю сомневатся.
Наверно когда перевалит за 200 стр о многопотоках, тогда можно вообще скопировать все мессажи с форума и скомпилить в один мануал догадок про не рабочие потоки ну или разбавить и сделать пару доров.

Отбить хотя бы вложенные деньги..

Вообщем я понял в чем дело, ну почти понял !!!!!!!!!!!!!!!!!!!!!!!! ОБЬЯСНИТЕ МНЕ ОДНУ ВЕЩЬ !
Как такое может бытьььььььььььььььььь ?????????????????????????????????
Запускаю я проэкт test00-google.xmlz - вместо алертов открывается гугл (вообщем открывается два окна [ http://google.com/?1 - http://google.com/?1 ] вместе [http://google.com/?0 - http://google.com/?1 ]
Ну ладно, удалю его из заданий.
Выбираю выполнить test00.xmlz - где вылетают алерты с результатом глобального счетчика.

Ахаахах а тут самое смешноооооооооооееееееееее )))))))))))))) вылетаю два поп апа резко почти закрываются а за ними вылетают два алерта 3,3

Такое впечетление как будто зеннопостер епта выполняет куски кода то тут то там то вообщем каких то темп файлов - что ли..........

Вообщем ребята спасайте.
 
Последнее редактирование модератором:

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
советую забить на глобальные переменные, долго пытался решить такую же проблему в итоге не вышло)
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
советую забить на глобальные переменные, долго пытался решить такую же проблему в итоге не вышло)
Да что за бред, ладно там если бы проскоки какие то были или еще что где то в середине выполнение и т д, а так с самого начала потоки идут не так, тут что то не то.

Должен бы быть какой то безпроигрышный вариант проверки.

Админы модеры боги, где вы

Вообщем смотрю в лог,
- Переменная не инициализированная
- Переменная не инициализированная
Рузультат 0,0

После повторного запуска
1
Успешно
2
Успешно

Что делать почему она не инициализируется ???
 
Последнее редактирование модератором:

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
Да что за бред, ладно там если бы проскоки какие то были или еще что где то в середине выполнение и т д, а так с самого начала потоки идут не так, тут что то не то.
Это не бред,в глобальных переменных все не то)
я решил проблему через списки
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Это не бред,в глобальных переменных все не то)
я решил проблему через списки
Я ее тоже так решил, но дело не в списках, мне нужна точность, если ее нет даже в таких мелочах, тогда вместе с софтом нужно выдавать лицензию на покупку огнестрельного оружие и один патрон.
Так как в каком то месте разработки проэкта софт будет играть по твоим нервным струнам с ухмылкой, а ты будеш бится в непонятках решение проблемы, и к тому же саппорт тебя будет игнорировать :-)
И тогда будет биг бэнг :D но не в моем случае, я просто делаю выводы.
 

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
Если ЗП не может решить мою задачу я заказываю сторонний софт, так сохраняю себе нервы.
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Если ЗП не может решить мою задачу я заказываю сторонний софт, так сохраняю себе нервы.
Ладно если бы задача была супер сложная, если я плачю деньги а софт не может выполнить элементарную задачю (даже не выполнить а распределить как я понимаю)
то зачем все это ? просто потом может быть где то такое же в каких то других функциях, и в итоге ты покупаеш софт и привращаешься не в клиента, а в дебаг фиксера какого то.
Зачем тогда выпускать столько версий - выпускали бы не так часто но зато хорошо оттестированную. Ну как то так.
 
  • Спасибо
Реакции: aleksei123

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Сдается мне что название проекта при сохранении его сути вообще ничего не значит)
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Сдается мне что название проекта при сохранении его сути вообще ничего не значит)
То ясно только вот из за токой вот сути они как то переплелись.
Ну да дело не во всем этом, а в точности запуска. Если нет точности в распределении даже 2 потоков то что можно думать дальше ? я не говорю о 100500 потоков или супермега проэктах каких то
просто обычный пример и вот такая беда.
 

KirillOFF

Client
Регистрация
18.12.2010
Сообщения
1 127
Благодарностей
517
Баллы
113
Даа, беда так беда :(
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
вот пример
все работает как нужно и глобальные переменные на предыдущем примере меняются как нужно
просто вам нужно чтобы для текущего потока значение было постоянным. а для глобалок это невозможно.
если вы постоянно хотите другими потоками увеличивать значение.
поэтому после увеличения глобальной переменной нужно сразу ее значение кидать в переменную локальную, которую уже и юзать в этом потоке
 

Вложения

  • Спасибо
Реакции: dubpuq

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
вот пример
все работает как нужно и глобальные переменные на предыдущем примере меняются как нужно
просто вам нужно чтобы для текущего потока значение было постоянным. а для глобалок это невозможно.
если вы постоянно хотите другими потоками увеличивать значение.
поэтому после увеличения глобальной переменной нужно сразу ее значение кидать в переменную локальную, которую уже и юзать в этом потоке
Я всего лиш хочу что бы было так, 0,1, 2,3 (если два потока)

А не 0,0, 1,2 и т д.

Т.е проскок все равно идет !

Т.е если идет 0,1 я знаю что два потока работает, 0 и 1

А у меня нет постоянства т.е четкого отчета 0,1 2,3 4,5 идет все равно где то проскок ! и все портится.


На счет файла что вы дали ? что с ним делать ? как это мне поможет ?

Запустил с ходу в зенно

 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
вот пример поправленный
анализируйте логигу шаблона. после смены глобальной переменной мы ее значение кидаем в локальную переменную и в проекте используем уже ее, если она нужна
 

Вложения

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Даже сдесь можно понять, что будет запускатся с проскоком



Видите зеленый нолег ?
Вот когда запускаете к примеру 3 потока,
Если там где зеленый нолег будет идти 1...2...3.. тогда возможно потоки будут идти равномерно т.е 0,1, 2
/то все равно что бы вы в процессе выполнение скрипта нажимали сами +1 (вверху таба) да.. не спорю такой вариант как бы можно было огранизовать, к примеру сделать алерт где то в середине скрипта и после алерта самому нажимать +1 поток :-) ахахах в итоге я бы был в роли паузы ))) хранителя времени что ли )) но когда ты запускаеш все сразу - сам зеннопостер из за какойто ошибки распределение времени, рубит два потока одновременно !!! в итоге получаются эти дурные 0,0 проскоки.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Получается все правильно,
неправильно понимается логика работы глобальных переменных.
из значение могут менять все потоки, а юзер хочет работать с индивидуальным значением глобальной переменной на протяжении всего потока.
в этом случае нужно значение глобальной переменной после изменения кидать в локальную переменную
 
  • Спасибо
Реакции: diverfor

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Ну вот я пару раз запускал ваш пример запускаю

3 потока - результат : 0,1,2
3 потока - результат : 0,2,1

Как вы видете цифры идет в беспорядке.

Т.е это проскок ? или что ?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Значения не пересекаются, просто какой то поток выполнил отображение оповещения раньше.
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Ну это уже хорошо что они не пересекаются, но местами они меняются как я понял, т.е в многопотоке нельзя выполнят потоки поочередно ? т.е к примеру 3 потока которые ходят по кругу ?
в таком порядке 0 1 2 ? - меня интересует лиш порядок. ну допустим

0 поток - будет брать 0 строку,
1 поток - будет брать 1 строку,
2 поток - будет брать 3 строку,

(Знаю про привязку к спискам)

Но меня интересует именно порядок, если его нет и не может быть так и скажите.
Но хоть одно уже радует что в вашем примере они не дублируются т.е хоть и идут 0,1,2 или 0,2,1.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
какими местами? ничего не меняется местами. с порядком все нормально. просто экшен оповещения выбрасывается одним потоком быстрее на микросекунду чем другим.
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
ага, т.е если в алерте будет вылетать 0,2,1 а если писать в файл то будет 0,1,2 ? щас проверим.
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Ну дааа ну дааа... вот ваш пример с локером вывел мне в алерте 0,2,1
Записал я попутно это дело в текстовый документ, результат : 021
Т.е как была воспроизведенна очередность алертов, такая же очередность была записанна в файл

Алерты : 0,2,1
Записать в файл : 021

А я мне надо точность !

Если 2 потока:

0,1

Если 3 потока:

0,1,2

Если 4 потока:

0,1,2,3

Вот какой мне порядок надо.

Если его нельзя сделать просто скажите - это невозможно - в глобальных.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
вы не понимаете что нет такого понятия как очередность потоков. они могут запускаться в разных базах, поток, стартовавший 4ым может до стадии записи в файл придти позднее чем 5ый. 5ый поток не будет ждать окончания первого.
Глобальные переменные = переменные, к которым обращатся могут и менять их все потоки. В этом их суть. И в этом они отрабатывают как нужно.
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
вы не понимаете что нет такого понятия как очередность потоков. они могут запускаться в разных базах, поток, стартовавший 4ым может до стадии записи в файл придти позднее чем 5ый. 5ый поток не будет ждать окончания первого.
Глобальные переменные = переменные, к которым обращатся могут и менять их все потоки. В этом их суть. И в этом они отрабатывают как нужно.
А... вот оно что.. ну я думал они по кругу работают к примеру запустил 5 потоков и пошел 0 1 2 3 4 5.. а оказывается они работают сами на себя.
Т.е может запустится получается 0,3,2,1 поток ? вообщем который раньше в инстанте начал работу тот и прав ?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
глобальные переменные никак не влияют на очередность потоков.
тот поток, который выхватил цифру 1 как глобальную и изменил ее на 2 стартует в любом случае раньше, чем поток, который возьмет 2 и изменит ее на тройку. но поток с цифрой 1 чисто теоретически может закончить позднее свое выполнение, чем поток, работающий с цифрой 2
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Ну вот ваш пример самый простейший казалось бы.
Но почему тогда если запускать много раз проэкт.
Цифры меняются местами, и так же записываются в файл ?

0,1,2
0,2,1

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

Но как я понимаю либо это невозможно, либо в зеннопостере идет какое то не правильное распределение старта потоков.

Т.е вы можете добится, сколько бы вы раз не запускали проэкт (ваш с с++) что бы всегда потоки начинались так 0,1,2

Вот возмите ваш проэкт и позапускайте пару тройку раз, я думаю у вас тоже будет такой результата

0,1,2 (порядок ок)
0,2,1 (порядок не ок)
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Как я понимаю все упирается в старт, именно на старте что то происходит что идет переброс какого то потока что и приводит к результату 0, 2, 1
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
я уже не знаю как написать все то же самое что писал выше, но другими словами.
последний раз подытожу:

тот поток, который выхватил цифру 1 как глобальную и изменил ее на 2 дошел до экшена инициализации/смены в любом случае раньше, чем поток, который возьмет 2 и изменит ее на тройку.
в дальнейшем потоки никак не синхронизированы и тесты с алертами и записями в файл, в ожидании сохранения порядка бессмысленны.
 
Последнее редактирование:

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
я уже не знаю как написать все то же самое что писал выше, но другими словами.
последний раз подытожу:

Ну вообщем все ясно, хаос.
Ну вот так функция радует, тем что хотя бы не повторяет потоки, ладно что они там в разброс уже.
А то дубли типа 0 0 это ад.
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)