=)Shaos wrote:можно на обычный юниксовый MessageQueue переписать...
Я никогда этой штукой не пользовался, и даже забыл про её существование. Но, да, она бы хорошо вписалась. Если, конечно, она существует в windows. Бегло погуглил -- есть какие-то сорцы датированные 2000'м годом, которые как заявлено реализуют message queue для Windows NT. Есть ещё boost::interprocess, который включает в себя кроссплатформенную реализацию очереди сообщений, которая на самом деле к POSIX message queue имеет весьма косвенное отношение, но в отзывах о boost::interprocess проскакивают фразы "pretty immature" и "hack around some missing features". Правда это относится к тому, что shared memory нельзя resize'ить, а файловый дескриптор message queue не засунуть в select: и то, и это никакого отношения к CEDAR'у не имеет.
Судя по-всему, именно такой мьютекс и используется в wxWidgets под вендовс.Shaos wrote:а вообще мьютекс можно создать так, чтобы один и тот же тред мог его лочить много раз - я с этим сталкивался на экзотических операционках для телевизионных приставок...
Я поначалу думал, что просто wxGTK отличается иным control-flow, скажем wxYield иначе работает -- но так я думал лишь пока на стеке между двумя фреймами функций CEDAR лочащих мьютекс я всегда видел фрейм функции wxYield или ещё какой-нибудь wxФункции. Но когда я увидел ситуацию где между двумя локами на стеке лишь функции CEDAR, то есть управление было передано напрямую, без посредства wxWidgets (и GTK), я понял что дело нечисто.