Bitmap
У меня три нитки (потока):
одна делает битмапы (шотит скрин)
вторая их сохраняет
третья чистит за ними память
Так вот. Во второй нитке работает GetDIBits,
и работает он почему-то недолго.
Начинает возвращать 0 (zero).
А GetLastError сообщает, что "операция завершена успешно".
Может есть какие-нить шаманские штучки при работе с GetDIBits?
Цитата:
Originally posted by GLFox
Может кто-нить подскажет...
У меня три нитки (потока):
одна делает битмапы (шотит скрин)
вторая их сохраняет
третья чистит за ними память
Так вот. Во второй нитке работает GetDIBits,
и работает он почему-то недолго.
Начинает возвращать 0 (zero).
А GetLastError сообщает, что "операция завершена успешно".
Может есть какие-нить шаманские штучки при работе с GetDIBits?
Может кто-нить подскажет...
У меня три нитки (потока):
одна делает битмапы (шотит скрин)
вторая их сохраняет
третья чистит за ними память
Так вот. Во второй нитке работает GetDIBits,
и работает он почему-то недолго.
Начинает возвращать 0 (zero).
А GetLastError сообщает, что "операция завершена успешно".
Может есть какие-нить шаманские штучки при работе с GetDIBits?
У тебя потоки синхронизованы?
Цитата:
Originally posted by Shnobell
У тебя потоки синхронизованы?
У тебя потоки синхронизованы?
Ясен перец, что синхронизированы.
Юзаем CriticalSection, но это в общем-то
слабо помогает.
У меня есть сомнение насчет GetDIBits,
потому как описалово в SDK какое-то не конкретное...
Цитата:
Originally posted by GLFox
Ясен перец, что синхронизированы.
Юзаем CriticalSection, но это в общем-то
слабо помогает.
У меня есть сомнение насчет GetDIBits,
потому как описалово в SDK какое-то не конкретное...
Ясен перец, что синхронизированы.
Юзаем CriticalSection, но это в общем-то
слабо помогает.
У меня есть сомнение насчет GetDIBits,
потому как описалово в SDK какое-то не конкретное...
А можно вопрос:
Если у тебя 3 потока, причем (скорее всего) с одним приоритетом т.к. выполняются одновременно, и должны работать жестко синхронно, то нахрен три? По мне лучше все в один поток.
А с функцией GetDIBIts помочь не могу, не работал с ней, а в SDK действительно как-то... лево
Синхронизация работает только при изменении критических данных.
Первый поток работает строго по интервалу и не должен задерживаться на всякие мелочи (типа дисковые операции и т.п.).
А остальные -- уже как бог на душу положит (их работа не критична по времени)