`
百合不是茶
  • 浏览: 356118 次
社区版块
存档分类
最新评论

线程和定时器

阅读更多

一:多线程

 

1,NSThread创建线程

 

  a,NSThread的类方法创建线程

   [NSThread detachNewThreadSelector:@selector(doing) toTarget:self withObject:nil];

 

 withObject 参数 下面几个方法类似

 

  b,构造方法创建线程需要start

 

   NSThread *th=[[NSThread alloc]initWithTarget:self selector:@selector(doing) object:nil];

    

 

        [th start];

 

 c,View创建

   [self performSelectorInBackground:@selector(doing) withObject:nil];

 

 

 

 

2,Operation创建线程

 

   a,Operation创建线程

   

//创建 Operation队列,add创建
NSOperationQueue *queue =[[NSOperationQueue alloc]init];
    
        [queue addOperationWithBlock:^{
    
           //执行方法
        }];

 

b,Operation启动多个线程,可设置线程的优先级

NSInvocationOperation *operation1=[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(downloadImage:) object:@"1"];
    NSInvocationOperation *operation2=[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(downloadImage:) object:@"2"];
    
    
    [operationQueue addOperation:operation1];
    [operationQueue addOperation:operation2];

 

 

 

3,GCD创建线程

   

  dispatch_queue_t queue=dispatch_queue_create("baihe", nil);
    
    dispatch_async(queue, ^{
      
    });

 

 

 

二:定时器

 

看下面的定时器操作

 [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doing) userInfo:nil repeats:YES];该语句可能不会输出 ,可能会被return

 

解决办法://获得当前线程,防止被return,无法执行

    [[NSRunLoopcurrentRunLoop] run];

 

一般不在主线程中执行定时操作,开启线程使用自动释放池操作

 /**
     TimerInterval : 执行之前等待的时间。比如设置成1.0,就代表1秒后执行方法
     
     target : 需要执行方法的对象。
     
     selector : 需要执行的方法
     
     repeats : 是否需要循环
    */
    
    @autoreleasepool {

   NSTimer *timer=
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doing) userInfo:nil repeats:YES];

        //RUNLoop管理定时器
//        [[NSRunLoop currentRunLoop]addTimer:timer forMode:NSDefaultRunLoopMode];
        

    //获得当前线程,防止被return,无法执行
    [[NSRunLoop currentRunLoop] run];
    
    
//    [timer invalidate];//停止定时器

 

 

 

 

1
3
分享到:
评论

相关推荐

    VC多线程和定时器 实例

    2. **定时器类型**:Windows提供了两种类型的定时器:消息定时器和计时器对象。消息定时器通过发送WM_TIMER消息到指定窗口来触发事件,而计时器对象则使用回调函数。 3. **设置定时器**:在VC中,可以使用`SetTimer...

    java多线程和定时器学习

    总的来说,Java多线程和定时器是构建复杂、高效应用程序的基础。通过合理利用这些特性,开发者可以设计出响应迅速、并发性能优秀的系统。在学习过程中,除了理论知识,实践编程和调试同样重要,因为这有助于更好地...

    MFC中利用多线程实现定时器

    在Windows编程环境中,MFC(Microsoft Foundation Classes)库提供了一种高效的方式来构建用户界面和应用程序。...通过不断学习和实践,你可以更好地掌握MFC多线程和定时器的运用,提升你的Windows应用开发技能。

    C#线程及定时器的功能实现

    在C#编程中,线程和定时器是两个非常重要的概念,它们在多任务处理和时间触发事件中发挥着核心作用。本项目基于C#2008,旨在实现线程和定时器的基本功能,包括开启和关闭,同时也提供了一个简单的用户界面,方便...

    C#多线程实现定时器

    C#多线程实现定时器 C#多线程实现定时器是指使用C#语言中的多线程编程技术来实现定时器功能。定时器是指在一定的时间间隔内执行某个操作或...使用C#多线程技术可以实现定时器功能,提供了一个灵活和高效的解决方案。

    基于QT的多线程定时器

    在基于QT的多线程定时器项目中,我们主要探讨的是如何在QT环境中利用多线程和定时器功能来实现特定的程序逻辑。 1. **QT中的线程(QThread)** 在QT中,`QThread`类是处理线程的基础。通过继承`QThread`,我们可以...

    linux线程实现定时器源码

    在Linux系统中,线程实现定时器是一种常见的技术,它涉及到多线程编程、时间管理以及C语言编程。本文将深入探讨如何...通过阅读和分析`main.c`和`makefile`,我们可以深入了解Linux环境下的线程定时器是如何工作的。

    python多线程定时器

    总结起来,`python多线程定时器`的实现涉及到Python的`threading`和`time`模块,通过`Thread`和`Timer`类来创建和管理线程,使用定时器控制线程的启动时间。主程序`main.py`使用这些工具来安排多个任务按设定的间隔...

    VC6 线程+定时器应用程序源码

    在本文中,我们将深入探讨如何在Microsoft Visual C++ 6.0(简称VC6)环境中创建和管理线程以及使用定时器。这个源码示例是关于如何在C++环境中结合线程和定时器功能的一个实用例子。我们将讨论以下几个关键知识点:...

    linux多定时器多线程

    在Linux操作系统中,多线程和多定时器是两种强大的技术,它们被广泛应用于各种复杂的系统和服务中。本文将深入探讨如何在Linux环境下利用多线程和多定时器来实现不同任务的并发执行,以及它们如何协同工作以提高程序...

    Qt的MoveToThread显示无法关闭在另一个线程的定时器

    问题:在线程中,我想使用个定时器,然后通过点击主线程的按钮来通知此线程的定时器开启和停止;发现会出现"无法关闭在另一个线程的定时器"的提示 解决办法:无法关闭在另一个线程的定时器,是因为定时器要在新的...

    fzTThreadTimer_delphi定时器_delphi_线程定时器_

    4. **启动与停止**:线程定时器通常有启动和停止方法,用于控制定时任务的开始和结束。正确管理和同步这些操作以防止资源泄漏或不必要的计算非常重要。 5. **精度与延迟**:线程定时器相比消息驱动的定时器,可能在...

    vs2005控件学习(含画图、多线程、定时器等)

    本篇主要聚焦于VS2005中的控件学习,特别是关于画图、多线程和定时器的应用。 首先,我们来看看VS2005中的控件。控件是用户界面(UI)的基础元素,它们允许用户与应用程序进行交互。VS2005提供了各种预定义的控件,...

    线程实现定时器的多种功能

    本篇文章将深入探讨如何利用线程实现一个定时器类,以实现定时、相对定时和周期定时执行的功能。 首先,我们需要理解C++中的线程库。C++11及后续标准引入了`<thread>`库,提供了对多线程的支持。通过创建和管理线程...

    Android定时器和线程实现

    在Android应用开发中,理解和掌握如何使用定时器和线程是非常关键的技能。定时器(Timer)和线程(Thread)常被用来实现后台任务、周期性操作以及更新UI等功能,提升用户体验。以下是对这两个核心概念的详细解释。 ...

    linux 多线程安全定时器

    `timerfd`和`epoll`是两种常见的机制,它们在处理多线程安全定时器方面各自扮演着重要角色。 `timerfd`是Linux内核2.6.28版本引入的一种新型定时器接口,它提供了一种通过文件描述符来通知定时器到期事件的方式。...

    CVI学习文件-多线程 异步定时器(修改增加学习版)

    在计算机编程领域,多线程和异步定时器是两个重要的概念,特别是在开发高效、响应迅速的应用程序时。本CVI(Cooperative Vision Interface)学习文件着重探讨了如何在CVI环境中利用多线程和异步定时器来优化程序性能...

    xintiao.rar_多线程 定时器

    在IT行业中,多线程和定时器是两个非常重要的概念,尤其在开发高效、实时性强的应用程序时。这里我们详细探讨这两个技术以及它们在“xintiao.rar_多线程 定时器”项目中的应用。 首先,让我们理解什么是多线程。在...

    C++ 定时器 线程的使用

    在C++编程中,定时器和线程是两个重要的概念,它们在开发高效、实时或异步应用程序时扮演着关键角色。本项目提供了一个简单的C++定时器与线程使用的示例,对于初学者来说是一个很好的学习起点。下面将详细解释这两个...

    C# .net 定时器,多线程实现定时器

    `TestConsoleApplication`可能是包含示例代码的项目,展示了如何在控制台应用中使用C#定时器和多线程。你可以通过查看该项目的源代码来了解如何在实践中应用这些概念。记住,理解和适当地使用定时器和多线程技术对于...

Global site tag (gtag.js) - Google Analytics