iOS线程和进程
pthread_t threadId = NULL; char* cString = "Hello World"; int result = pthread_creat(&threadId, NULL, pthreadTest, cString); if (result == 0) { printf("success") } else { printf("failed") }
[NSThread detachNewThreadSelector:@selector(threadTest) toTarget:self withObject:nil];
3.GCD dispatch_async(dispatch_get_global_queue(0, 0), ^{ [self threadTest]; });
[[[NSOperationQueue alloc] init] addOperationWithBlock:^{ [self threadTest]; }];
“线程”是程序运行时指令流的最小单位。进程是指一个具有一定独立功能的程序,而线程是进程的一部分,描述指令流执行状态;线程是进程中的指令执行流的最小单位,是CPU调度的基本单位。一个线程是一个任务(一个程序段)的一次执行过程;线程不占有内存空间,它包括在进程的内存空间中。在同一个进程内,多个线程共享进程的资源;一个进程至少有一个线程。
进程想要执行任务,必需要有线程,进程至少要有一条线程。 进程是系统中运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内 通过活动监视器 可查看Mac系统中所开的进程
1···同一进程的线程,共享本进程的地址空间;而进程之前,则是独立的地址空间。同一进程内的线程共享本进程的资源,如内存、I/O、cup等;进程之间的资源是独立的。 ...一个进程崩溃后,在保护模式下不会对其他进程产生影响 ...一个线程崩溃后,整个进程都死掉;所以进程要比线程健壮。
2...进程切换时,消耗的资源大,效率高。所以涉及到频繁切换时,用线程要好于进程。同样如果要求同时进度并且又要共享某些变量的并发操作,只能用线程,不能用进程
3...执行过程:每个独立的进程都有一个程序运行的入口,顺序执行序列和程序入口。但是线程不能独立运行,必需依存在应用程序中,由应用程序提供多个执行控制。
4...线程是处理器调度的基本单位,但是进程不是
5...线程没有地址空间,线程包含在进程的地址空间中