`
aigo
  • 浏览: 2675871 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

Linux上的线程sleep时间问题

阅读更多

原文作者:@玄冬Wong

 

windows上的sleep最小间隔可以精确到1ms,但是linux上sleep函数需要注意几个地方:

 

1,usleep(int microseconds)是旧式API,虽然参数是微妙,但是在linux系统上如果间隔低于10毫秒,死循环的CPU占用率仍然很高,如果要用usleep,间隔最小值必须设置为10ms,10000微妙。windows上不存在这种问题,只要sleep的间隔有1ms,死循环CPU占用率很低。

 

2,kernel 2.0之后才提供了一个新版API:nanosleep(int microseconds),这个API才可以将间隔时间控制在微秒级。

 

参考:

High-resolution timing

http://tldp.org/HOWTO/IO-Port-Programming-4.html

 

 

分享到:
评论

相关推荐

    Linux多线程编程,替代sleep的几种方式

    我只想要进程的某个线程休眠一段时间的,可是用sleep()是将整个进程都休眠的,这个可能达不到,我们想要的效果了。目前我知道有三种方式:  1、usleep  这个是轻量级的,听说能可一实现线程休眠,我个人并不...

    linux多定时器多线程

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

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    linux c++ 守护线程,判断程序是否运行,不存在就启动

    在Linux系统中,C++编程时常常需要创建守护线程(daemon thread)来执行特定的任务,比如监控系统状态、定时任务或确保某个服务始终运行。守护线程是一种长期运行的后台进程,它不依赖于终端会话,即使用户注销或者...

    linux_下多线程编程 C语言

    ### Linux 下 C 语言多线程编程实例解析与关键技术点 #### 一、多线程基础知识 在Linux环境下,利用C语言进行多线程编程是一种常见的技术手段,它能够有效地提高程序的并发处理能力,充分利用现代多核处理器的计算...

    Linux系统编程之线程同步

    unlock主动解锁函数,同时将阻塞在该锁上的所有线程全部唤醒,至于哪个线程先被唤醒,取决于优先级、调度。默认:先阻塞、先唤醒。 例如:T1 T2 T3 T4 使用一把mutex锁。T1加锁成功,其他线程均阻塞,直至T1解锁。...

    Linux取消线程实例代码.pdf

    sleep 函数是 Unix 系统中的一个函数,用于将当前进程挂起一段时间。在本例中,sleep 函数用于在创建线程后等待 1 秒,以便让线程执行。 8. perror 函数 perror 函数是 Unix 系统中的一个函数,用于打印错误信息。...

    linux多线程编程

    总之,Linux多线程编程涉及到线程的创建、管理以及同步等问题,合理利用多线程能提高程序效率,但需谨慎处理线程间的交互以避免潜在的问题。POSIX线程库提供了一套完善的接口,让开发者能够在Unix/Linux系统中方便地...

    linux下C语言多线程编程实例

    线程间通信和同步是多线程编程中的关键问题,防止数据竞争和死锁是实现高效并发的关键。 二、pthread库介绍 pthread库提供了以下主要函数: 1. `pthread_create()`: 创建新的线程,传入线程函数指针和参数。 2. `...

    面试中多线程问题

    Thread.sleep() 使当前线程在指定的时间处于“非运行”状态。线程一直持有对象的监视器。如果另一线程调用了 interrupt() 方法,它将唤醒那个“睡眠的”线程。t.suspend() 是过时的方法,使用 suspend() 可能引起...

    Linux创建线程实例代码.pdf

    Linux线程创建实例代码详解 Linux操作系统作为一个开源的操作系统,具有高度的可扩展性和灵活性,在嵌入式系统开发中广泛应用。其中,线程创建是Linux编程中一个非常重要的概念,本文将详细介绍Linux创建线程实例...

    Linux多线程实现令牌桶流量控制

    本文将深入探讨如何在Linux环境下利用多线程技术来实现令牌桶流量控制。 首先,我们要理解令牌桶算法的基本原理。令牌桶算法是一个允许突发数据传输并同时保持平均传输速率的机制。桶中存储一定数量的令牌,只有当...

    Linux系统线程死锁实验报告.pdf

    `sleep()`函数使得线程暂停执行指定的秒数,它在代码中被用于模拟线程执行所需时间。这有助于保证线程间的资源竞争和死锁的产生。 9. 代码错误处理: 在实验代码中,包含了错误处理逻辑,例如使用`pthread_mutex_...

    Linux进程、线程和调度(1)

    总结来说,Linux进程和线程的管理涉及进程状态的转换、task_struct的作用、内存泄漏的检测与防范、fork创建子进程以及子进程资源的回收等问题。而调度方面,则包括进程调度策略、调度器的算法和对CPU资源的限制。...

    linux nanosleep纳秒级sleep的实现 - 更精确的延迟.zip

    在Linux操作系统中,传统的`sleep`函数以秒为单位提供延迟,但在许多高精度的系统编程和实时应用中,这种精度往往不足。`nanosleep`函数是Linux提供的一种更高级的延迟机制,它允许程序以纳秒为单位指定延迟时间,...

    Linux下进程及多线程编程

    在 Linux 下进行多线程编程时,首先要创建线程,然后,要掌握线程的结束方法,线程的参数传递及线程的标识等基本概念,在此基础上,熟悉线程互斥锁的概念及其编程。 创建线程的函数原型是:`int pthread_create...

    linux pthread 多线程控制示例代码

    5. `sleep()`: 这个函数是Unix/Linux系统调用,它使当前线程暂停执行,进入睡眠状态,直到指定的秒数过去。这在多线程编程中常用于线程间的简单同步或延时。 在提供的示例代码中,可能包含了如何使用这些函数来创建...

Global site tag (gtag.js) - Google Analytics