Пользовательская программа уменьшения количества карт в Hive, что за правило? Как насчет ввода и вывода?

Я застрял на несколько дней, потому что хочу создать собственную программу сокращения карты на основе моего запроса по улью, Я использую фреймворк wxWidgets (версия 2.9.1), и в моем случае он опирается на Какао. Дизайн приложения такой: поток №1 (...

У меня проблема, связанная с графическим интерфейсом пользователя / потоками, в Mac OS X (10.6.7). Я использую фреймворк wxWidgets (версия 2.9.1), и в моем случае он опирается на Какао. Дизайн приложения выглядит следующим образом:

  • поток №1 (он же «Главный поток»): входит в main (), анализирует переключатели и, если необходимо, запускает другой поток (с использованием примитивов POSIX).
  • поток №2 (он же «Поток графического интерфейса»): использует wxEntry для инициализации виджетов wxWidget и отображения графического интерфейса.

Как и большинство других структур графического интерфейса пользователя, Какао не является потокобезопасным, поэтому мы обязательно выполняем все вызовы графического интерфейса из потока №2, передача сообщений при необходимости. Тем не менее, в этом конкретном случае, во время инициализации из внутренних компонентов Cocoa (из NSUndoManager, если быть более точным) возникает утверждение, по сути, «небезопасно использовать меня вне основного потока». Хотя поток №2 является основным потоком , что касается всего, что связано с графическим интерфейсом,

Что ж, NSUndoManager должен иметь способ узнать, что он работает вне основного потока (возможно, используя NSThread: : isMainThread ()). Итак, мой вопрос: можно ли обмануть NSUndoManager (и Cocoa в целом) по этому поводу? А еще лучше объявить поток №2 «Основным потоком» , а поток №1 станет второстепенным? По сути, мне нужен вызов API типа «сделать вызывающий поток основным». Недокументированное волшебство и Objective C ++ в порядке, пока он работает и в OS X 10.5.

PP код, как он есть сейчас, работает безупречно под Windows / Linux / MacOSX + Carbon. Кроме того, переделка его для изменения структуры потока была бы огромной проблемой.

13
задан Bill the Lizard 31 May 2011 в 13:03
поделиться