Потоки, классы и методы

Sep 21, 2009 12:16


В данном опусе речь пойдет о создании потоков. Но не о простом создании, а о более-менее сложных случаях, когда в контексте потока должен выполняться метод некоторого класса, естественно, при условии, что поток создается этим же классом.( Read more... )

Программирование, работа

Leave a comment

Comments 13

Format shiftmaster September 21 2009, 08:25:52 UTC
Какого ... форматирование про**алось?!

Reply


Спасибо nut_pro November 3 2011, 20:30:59 UTC
как раз подобный _voodoo_thunk мне понадобится в понедельник для callback'а

Reply

Re: Спасибо nut_pro November 8 2011, 10:51:38 UTC
Хотя, я ошибся
вариант _voodoo_thunk особо ничем не отличается от вариантов со статическими методами, просто в _voodoo_thunk этот метод завуалирован, и у разных экземпляров класса CVoodoo эта функция (которая потом передается в CreateThread) будет одна и та же

Reply

Re: Спасибо shiftmaster November 8 2011, 20:25:11 UTC
Отличается. Тем, что нет функции-переходника. Ее функционал скрыт в шаблоне. Для каждого экземпляра класса будет вызван "свой" метод _DoProc, работающий в другом потоке. В этом легко убедиться, проверив this сразу после входа в _DoProc, например, посредством atltrace или банальным OutputDebugString.
Да, и еще. Для callback'ов такая схема не годится.
Так может быть, дело не в "кошках"? :)

Reply

Re: Спасибо nut_pro November 9 2011, 05:22:40 UTC
_DoProc конечно же вызывается тот, который нужно, но это только потому, что поток запускается сразу при вызове CreateThread. А вы попробуйте создать два потока CREATE_SUSPENDED, а потом оба запустить и увидите, что _DoProc стал одинаковым, а именно последним

Reply


Leave a comment

Up