Wolfram
15:30 17-05-2011
С утра починял примус винду у знакомых.
Потом немного поковырялся с кодом — многопоточные приложения довольно тяжко пока даются, попутно нашел прикольный глюк.
Продолжаю работать над ипподромом.
Сделал пятую неделю первый день.
Комментарии:
стикер
17:23 17-05-2011
многопоточные приложения довольно тяжко пока даются

Делай shared nothing архитектуру и не будет у тебя проблем. Два потока, у каждого всё своё, между ними напирмер, синхронизированная очередь. Сериализируешь объект, запихиваешь в очередь, другим потоком достаёшь, десериализируешь и обрабатываешь, и не будет у тебя проблем с тем, что кто-то застегнул то, что кто-то другой ещё не успел отряхнуть.
Wolfram
11:22 18-05-2011
Все хорошо, только я на делфях пишу)
Ну и сейчас (то задание я сделал) надо через мьютексы реализовать...
стикер
16:27 18-05-2011
и в дельфях ничего этого нет?
Wolfram
09:13 19-05-2011
Наверное как-то подобное реализовать реально, я не спец в делфях. Там есть стандартный класс для разработки многопоточных приложений — TThread, в нем синхронизация потоков реализована через абстрактный метод Synchronize, который переопределяется и может работать с VCL классами, а в основе его разные методы WinAPI, в зависимости от версии делфи. Ну я сорсы особо не смотрел, да и не нужно это.

Сериализации, как в java в Delphi 7 нет, или я не знаю и никогда не пользовался. (Честно говоря, я плохо представляю зачем вообще она нужна?)
Теперь моя задача — синхронизировать данные программы не через стандартные высокоуровневые классы делфи (например), а через т.н. объекты ядра (мьютексы (в моем случае), семафоры, эвенты). Ессно все для винды.
стикер
10:43 19-05-2011
Сериализация нужна чтобы передавать не объект (т.е. указатель), а копию объекта (копию данных) от одного процесса к другому. Очень удобно, если ты не хочешь чтобы два процесса лезли в один и тот же участок памяти. Отдал данные и забыл.