У меня есть рабочее серверное/клиентское приложение с использованием распределенных объектов в объекте-c. То, с чем я сейчас борюсь, делает приложение многопоточным. Так что больше пользователей может одновременно получить доступ к серверу.Распределенные объекты, Threading, Objective-C
Здесь главная функция для сервера. Здесь я создаю объект nsconnection.
С моей точки зрения, способ, которым я должен подходить к этому, - это когда пользователь пытается получить доступ к серверу, для этого конкретного вызова должен быть назначен новый поток. Должен ли [conn runInNewThread] позаботиться об этом?
Любые мысли Ценится ...
Вот код для сервера.
int main (void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Transactions *trans = [Transactions new];
NSConnection *conn = [NSConnection defaultConnection];
[conn setRootObject: trans];
[conn runInNewThread];
if (![conn registerName:@"holycow"])
{
NSLog (@"Failed registering holycow.");
exit (1);
}
NSLog (@"waiting for connections...");
[[NSRunLoop currentRunLoop] run];
[pool release];
return 0;
}
Это, кажется, имеет место для меня. Я мог иметь два клиентских приложения, которые вызывают синхронное (что означает, что я не использовал метод класса «oneway») по сравнению с DO в одно и то же время. Это было похоже на то, что оно автоматически зацикливалось на нем. Это было немного медленнее, потому что, ну, сервер был занят чем-то трудным, но когда я дал ему секунду, сервер ответил, пока он обрабатывал другую задачу одновременно. Однако я бы рекомендовал, чтобы кодеры делали что-то вроде запуска задачи с помощью метода oneway (async), а затем проверяли его с помощью метода синхронизации, который выполняется быстро. – Volomike