首页 > 试题广场 >

实现多线程都有哪几种方法?

[不定项选择题]
实现多线程都有哪几种方法?
  • 使用@synchronized(self)
  • 使用GCD
  • 使用NSOperationQueue
  • 使用@thread
@thread 是安卓的关键字 iOS应该是NSThread
发表于 2015-09-05 15:37:50 回复(1)
http://www.cnblogs.com/kenshincui/p/3983982.html
发表于 2015-07-07 14:32:05 回复(0)
pthread、NSThread、GCD、NSOpration
发表于 2015-09-23 11:10:06 回复(0)
什么答案! NSThread, GCD, NSOperationQueue
发表于 2015-08-20 21:46:31 回复(2)
D选项应该是用NSTheard来进行创建
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

//创建子线程

    NSThread * theard =[[NSThread alloc]init];

    

//手动调用启动子线程

    [theard start];

    

    NSLog(@"%@",theard);

}


编辑于 2016-03-02 15:44:27 回复(0)

在iOS中每个进程启动后都会建立一个主线程(UI线程),这个线程是其他线程的父线程。由于在iOS中除了主线程,其他子线程是独立于Cocoa Touch的,所以只有主线程可以更新UI界面(新版iOS中,使用其他线程更新UI可能也能成功,但是不推荐)。iOS中多线程使用并不复杂,关键是如何控制好各个线程的执行顺序、处理好资源竞争问题。常用的多线程开发有三种方式:

1.NSThread

2.NSOperation

3.GCD

发表于 2015-09-05 16:59:24 回复(0)
错把@thread看成NSThread
发表于 2021-03-02 14:50:23 回复(0)
d出来捣乱么
发表于 2018-04-04 16:32:35 回复(0)
眼花了 thread vs NSThread
发表于 2018-02-28 17:21:19 回复(0)

iOS应用开发中我们可以使用如下三种方式来实现程序的多线程执行:

1、NSThread 
2、Cocoa NSOperation (使用NSOperation和NSOperationQueue)

3、GCD  (Grand Central Dispatch)

三种方式抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的,NSOperation 是在GCD的基础上的封装。各有缺点介绍:
1.NSThread:
优点:NSThread 比其他两个轻量级。
缺点:需要自己管理线程的生命周期,线程同步,线程同步时对数据的加锁会有一定的系统开销。
.2.Cocoa Operation 
优点:不需要关心线程管理,数据同步的事情。
Cocoa Operation 相关的类是 NSOperation ,NSOperationQueue。NSOperation是个抽象类,使用它必须用它的子类,可以实现它或者使用它定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执行,我们会把我们的执行操作放在NSOperation中main函数中。
3.GCD
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术。它让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务,一个任务可以是一个函数(function)或者是一个block。

dispatch queue分为下面三种:
private dispatch queues,同时只执行一个任务,通常用于同步访问特定的资源或数据。
global dispatch queue,可以并发地执行多个任务,但是执行完成的顺序是随机的。
Main dispatch queue 它是在应用程序主线程上执行任务的。


发表于 2017-08-14 21:51:41 回复(0)
D你是出来抢镜头的么😱
发表于 2016-10-28 15:32:43 回复(0)
把D看成pthread了。。。
发表于 2016-06-17 22:45:11 回复(0)
这道题的答案有问题
发表于 2015-08-21 10:10:00 回复(0)
牛客上给出的答案是谁做的?怎么感觉有些是模棱两可的。。。
发表于 2015-08-20 15:02:31 回复(1)
@synchronized(self)是对线程方法里面的代码进行加锁,为什么会是实现多线程的方法?
发表于 2015-08-04 22:32:25 回复(0)
abc
发表于 2015-05-03 22:53:36 回复(0)
[-]. BC
 - GCD:Grand Central Dispatch,基于c语言的派生框架,可以充分利用多核,是苹果推荐的方式。
 - NSThread:最简单的线程技术,需要使用者管理周期与调度。
 - NSOperation:面向对象的多线程技术,使用者无需担心数据同步与调度管理。
无@thread的写法

发表于 2015-01-15 15:34:29 回复(1)
BC
发表于 2015-01-08 08:41:17 回复(0)
B
C


发表于 2014-12-29 13:01:44 回复(0)
xxj头像 xxj
//c++
CreatThread
_beginThread //安全 
发表于 2014-11-18 15:56:27 回复(0)