2010-08-10 2 views
1

Я хотел бы знать, есть ли способ проверить правильность функции обратного вызова.C++ QThread и повысить функции обратного вызова

Вопрос является следующим:

класс A; класс B;

В функции инициализации класса А, следующий делается.

boost :: function < void (класс B)> call_back;

использование пространства имен boost :: lambda; call_back = bind (& A :: callback_after_preparation, this, boost :: lambda :: _ 1);

Проблема заключается в том, что обратный вызов вызывается из QThread и перед A :: callback_after_preparation вызывается из QThread, объект A, удаляется из приложения (это один случай использования в приложении)

Так приложение выходы при доступе к данным в A.

Есть ли способ проверить правильность функции call_back ??

Пожалуйста, ответьте

+0

Я еще не работал с boost :: function, поэтому я не знаю, работает ли это в этом случае, но самый простой способ избежать оборванных указателей в поточных приложениях - std :: tr1 :: weak_ptr. Может ли это быть использовано в объявлении boost :: funtion? – stefaanv

ответ

0

Вы действительно спрашиваете, если есть какой-либо способ узнать, что конкретный объект был удален, по-видимому, в другом потоке. Это зависит от вашего кода, чтобы обрабатывать такие вещи - в конце концов, это был ваш код, который выполнил удаление, установив какой-то флаг.

Смежные вопросы