Не используйте потоки, если вы не знаете, что вам нужно.
Почти все используют цикл выполнения основного потока по умолчанию.Вы не можете (легко) использовать другой цикл выполнения без использования другого потока - каждый поток имеет не более одного цикла выполнения.
(Строго говоря, большинство вещей использует «текущий» цикл выполнения, который является циклом выполнениятекущий выполняемый поток, который обычно будет основным потоком.)
В прошлом большинство игр для ПК не запускали сетевой код в другом потоке, что означает, что медленная видеокарта снижала производительностьсетевого кода.В наши дни FPS часто запускают сетевой код в отдельном потоке по умолчанию или имеют возможность сделать это (Quake 3 имеет режим «чистого сервера»);это делает игровую физику отделенной от производительности рендеринга хоста, что, как правило, хорошо.
(каким-то образом выполнение всего, что вызывает перезагрузку текстуры и т. д. в Quake 3, все еще отстает от потока сервера.)
Если вы собираетесь запустить сервер в отдельном потоке, я предлагаю общаться с локальным «клиентом» через «сеть».В любом случае вам придется написать какой-то сетевой код, поэтому просто используйте что-то вроде socketpair(AF_UNIX, SOCK_DGRAM, 0, &sockets)
(если это не сработает, попробуйте AF_INET) и рассматривайте их как UDP-сокеты.
Обратите внимание, что вы не 'Вам нужно использовать GameKit для связи по Bluetooth.Если вы публикуете службу Bonjour (см. NSNetService), она будет автоматически рекламироваться через ту же сеть Bluetooth PAN, которая используется для GameKit (внутренняя часть GameKit работает через Bonjour через IP через Bluetooth).Если вы просто используете Bonjour и UDP, вам будет проще сделать его кросс-платформенным и поддерживать старые устройства, которые не поддерживают GameKit через Bluetooth.
(я думаю, что GameKit имеет дополнительные сетевые функции, поэтому A и Bможет общаться, используя C и реле. Я не проверял это. Это не очень важно.)