![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Всем привет. Заранее извиняюсь, что поднимаю затертую до дыр тему. Но я столкнулся с проблемой, которую я не могу решить.
Значит вкратце о программе. Прога создает файл (точнее открывает уже созданный), мэпает его. Потом создаются два потока - один пишет в файл, через отображение, а второй читает из отображения. Код:
Код:
ПыСы: главная особенность в чем - если я пишу без потоков, а просто вот в main, прямым кодом (в проге закоментил), то все пашет нормально. А с потоками - никак. Подскажите пожалуйста, в чем может быть проблема. Последний раз редактировалось rpy3uH; 16.11.2008 в 15:45. |
![]() |
![]() |
![]() |
#2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Все, прога не рестартиться - проблема была в том, что на строке
Код:
Код:
Вот код процедуры записи (та которую юзает поток) Код:
Последний раз редактировалось MaTBeu; 16.11.2008 в 15:51. |
![]() |
![]() |
![]() |
#3 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
вызывай в конце UnmapViewOfFile. И желательно закрывать все хендлы, в потоках ты этого не делаешь
|
![]() |
![]() |
![]() |
#4 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Спасибо, исправил. Но все же, не могли бы вы ответить на мой вопрос - как заставить поток другого процесса писать в отображение? (Ну через FlushViewOfFile или как там).
Тоесть есть три процесса. Первый (он же главный), создает отображение. Проверяет его. Потом создает дочерний процесс, который читает из отображения. Это все работает нормально. Потом главный поток создает дочерний процесс-писатель. Который пишет в отображение... Вот тут и не работает. Главный процесс: Код:
Код:
Последний раз редактировалось MaTBeu; 16.11.2008 в 16:05. |
![]() |
![]() |
![]() |
#5 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
вызов FlushViewOfFile заканчивается ошибкой?
|
![]() |
![]() |
![]() |
#6 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Нет все в порядке проходит. Короче FlushViewOfFile не скидывает буфер, а только создает вид, что скидывает. Короче я все поправил, дело было в том, что нужно было строку LPTSTR, тоесть ЮНИКОД писать, а я писал обычными LPSTR. По ходу проблема была в этом.
На всякий случай привожу полный текст программы (может кому пригодится) Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
File of... | GreenDan | Общие вопросы Delphi | 4 | 25.08.2008 22:04 |
file of byte | medikk | Общие вопросы Delphi | 1 | 11.08.2008 16:00 |
record/file | potion | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 10.05.2008 20:15 |
Google Map API | qwestor | PHP | 3 | 22.01.2008 08:12 |
Проблемы с file | HSALF | Общие вопросы Delphi | 3 | 21.06.2007 19:27 |