在线程中运行套接字流

时间:2009-07-27 15:06:52

标签: iphone objective-c multithreading

我有一个应用程序打开与2个套接字(进出)的连接,我想让它们在一个线程中工作。

我希望它们在一个单独的线程中的原因是我不希望我的应用程序在收到数据时冻结,并且只要应用程序正在运行,这就可以随时发生。

目前我有一个处理网络通信的类,我在NSOperation中运行这个类,我不确定它是否是最好的解决方案。

我不太熟悉线程,所以如果你能给我一些帮助我会非常感激。

由于

1 个答案:

答案 0 :(得分:2)

首先,您应该知道可以使用相同的套接字来发送和接收数据 - 它们通常是双向的。您应该能够在多个执行线程中共享对同一套接字的引用。

其次,除非您收到大量数据并且遇到UI性能问题,否则我会延迟优化。 (不要误解我的意思,这是一个很好的考虑因素,但过早的优化是所有邪恶的根源,如果它充分发挥作用,那么更简单通常会更好。)

第三,NSOperation个对象是“单次”的,这意味着一旦main方法完成,操作任务就不能再次使用了。这可能会也可能不会有助于您的网络模型。您也可以查看NSThread。事实上,您已经拥有“因素分解”的功能预示着您的设计,无论结果是什么都是最好的。

最后,线程是一个复杂的主题,但是开始的一个好地方(特别是对于Objective-C)是Apple的Threading Programming Guide