多线程经常使用的函数

#import "ViewController.h"

#import "LZJPerson.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

//    [self delay];

LZJPerson *P1 = [[LZJPerson alloc]init];

LZJPerson *P2 = [[LZJPerson alloc]init];

NSLog(@"%@------%@",P1.book,P2.book);

}

- (void)delay{

NSLog(@"start---");

//    1.延迟执行的第一种方法

//    [self performSelector:@selector(task) withObject:nil afterDelay:2.0];

//    2.延迟执行的第二种方法

//    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(task) userInfo:nil repeats:YES];

//    第三种 GCD

// dispatch_queue_t queue =  dispatch_get_main_queue();

dispatch_queue_t queue =dispatch_get_global_queue(0, 0);

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)),queue , ^{

NSLog(@"GCD---%@",[NSThread currentThread]);

});

}

//一次性代码----注意不能放在懒加载里面使用

- (void)once{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

NSLog(@"------hello");

});

}

- (void)task{

NSLog(@"task---%@",[NSThread currentThread]);

}

GCD中还有个用来执行任务的函数:

dispatch_barrier_async(dispatch_queue_t queue, dispatch_block_t block);

在前面的任务执行结束后它才执行,而且它后面的任务等它执行完成之后才会执行

这个queue不能是全局的并发队列

@end

时间: 2024-08-27 19:29:47

多线程经常使用的函数的相关文章

thread.join函数,java多线程中的join函数解析

join函数的作用,是让当前线程等待,直到调用join()的 线程结束或者等到一段时间,我们来看以下代码 1 package mian; 2 3 4 public class simpleplela { 5 static void threadMessage(String message) { 6 String threadName = 7 Thread.currentThread().getName(); 8 9 System.out.println(threadName+" "+m

[OS] 多线程--原子操作 Interlocked系列函数

转自:http://blog.csdn.net/morewindows/article/details/7429155 上一篇<多线程--第一次亲密接触 CreateThread与_beginthreadex本质区别>中讲到一个多线程报数功能.为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错.这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增.程序在最后输出计数的值表示有今天多少个用户登录,如果这个值不等

java多线程编程——静态同步函数

//饿汉式,在多线程下是安全的 public class Single { private static final Single s=new Single(); private Single(){}; public static Single getInstance(){ return s; } } //懒汉式,非线程安全,必须使用同步 public class Single { private static Single s=null; private Single(){}; public

c# 多线程 调用带参数函数

线程操作主要用到Thread类,他是定义在System.Threading.dll下.使用时需要添加这一个引用.该类提供给我们四个重载的构造函数(以下引自msdn).       Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.     Thread (ThreadStart) 初始化 Thread 类的新实例.    由 .NET Compact Framework 支持.        Threa

delphi的多线程编程

多线程的基本概念 win 98/nt/2000/xp 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用cpu 运行时间和资源,或者说,把cpu 时间划成片,每个片分给不同的线程,这样,每个线程轮流的“挂起”和“唤醒”,由于时间片很小,给人的感觉是同时运行的. 多线程带来如下好处:(自己阅读) 1)避免瓶颈: 2)并行操作: 3)提高效率: 在多线程中,通过优先级管理,可以使重要的程序优先操作,提高了任务管理的灵活性. 另一方面,在多cpu 系统中,可以把不同的线程在不同的

多线程爬虫

1 # 多线程爬虫 2 # map函数的使用 3 # from multiprocessing.dummy import Pool 4 # pool=Pool(4) 5 # results = pool.map(爬取函数,网址列表) 6 # 实例演示: 7 from multiprocessing.dummy import Pool as ThreadPool 8 import requests 9 import time 10 11 def getsource(url): 12 html =

R语言基因组数据分析可能会用到的data.table函数整理

R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理的步骤进行了程序上的优化,使用多线程,甚至很多函数是使用C写的,大大加快数据运行速度.因此,在对大数据处理上,使用data.table无疑具有极高的效率.这里主要介绍在基因组数据分析中可能会用到的函数. fread 做基因组数据分析时,常常需要读入处理大文件,这个时候我们就可以舍弃read.ta

多线程编程基础知识

多线程编程基础知识 http://www.cnblogs.com/cy163/archive/2006/11/02/547428.html 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.因此掌握

C之多线程(例子很不错)

1.线程 线程池是一个树状结构. 多线程解决并发问题. 一个线程内部的执行顺序是线性的.而线程之间是乱序的. 若要创建一个多线程程序,它的参数必须是空指针类型. 变色龙程序: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include <stdlib.h> #include <Windows.h> #include<process.h>//进程 #include <time.h> void