loc是什么意思?spinlock 和 Semaphore信号量的区别

loc是什么意思

loc是location的缩写,意思是地方。

location 

英 [ləʊ’keɪʃn]  美 [loʊ’keɪʃn]    

n. 位置,外景拍摄地,定位,地点

例句:He indicated the location of the Persian Gulf with a pen on the map.

翻译:他用一支笔在地图上标出了波斯湾的位置。

短语:pinpoint a location 精确地指出位置

近义词

place 

英 [pleɪs]   美 [pleɪs]    

n. 地方,地位,职位,获奖的名次

v. 将(某物)放置,安排,订货,寄托,辨认,获得名次

例句:Put everything away in its correct place.

翻译:把东西放到该放的地方去。

spinlock 和 Semaphore信号量的区别

Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。
Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。
Binary semaphore与Mutex的差异:
在有的系统中Binary semaphore与Mutex是没有差异的。在有的系统上,主要的差异是mutex一定要由获得锁的进程来释放。而semaphore可以由其它进程释放(这时的semaphore实际就是个原子的变量,大家可以加或减),因此semaphore可以用于进程间同步。Semaphore的同步功能是所有系统都支持的,而Mutex能否由其他进程释放则未定,因此建议mutex只用于保护critical section。而semaphore则用于保护某变量,或者同步。
另一个概念是spin lock,这是一个内核态概念。spin lock与semaphore的主要区别是spin lock是busy waiting,而semaphore是sleep。对于可以sleep的进程来说,busy waiting当然没有意义。对于单CPU的系统,busy waiting当然更没意义(没有CPU可以释放锁)。因此,只有多CPU的内核态非进程空间,才会用到spin lock。Linux kernel的spin lock在非SMP的情况下,只是关irq,没有别的操作,用于确保该段程序的运行不会被打断。其实也就是类似mutex的作用,串行化对critical section的访问。但是mutex不能保护中断的打断,也不能在中断处理程序中被调用。而spin lock也一般没有必要用于可以sleep的进程空间。
———————————————————————————————

内核同步措施
为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。
Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的过度。锁机制越来越有效,也越来越复杂。
目前来说内核中原子操作多用来做计数使用,其它情况最常用的是两种锁以及它们的变种:一个是自旋锁,另一个是信号量。我们下面就来着重介绍一下这两种锁机制。
自旋锁
自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分(对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,不需要自旋锁)。
自旋锁最多只能被一个内核任务持有,如果一个内核任务试图请求一个已被争用(已经被持有)的自旋锁,那么这个任务就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的内核任务便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的内核任务同时进入临界区,因此这种锁可有效地避免多处理器上并发运行的内核任务竞争共享资源。
事实上,自旋锁的初衷就是:在短期间内进行轻量级的锁定。一个被争用的自旋锁使得请求它的线程在等待锁重新可用的期间进行自旋(特别浪费处理器时间),所以自旋锁不应该被持有时间过长。如果需要长时间锁定的话, 最好使用信号量。
自旋锁的基本形式如下:
spin_lock(&mr_lock);
//临界区
spin_unlock(&mr_lock);
因为自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点很好地满足了对称多处理机器需要的锁定服务。在单处理器上,自旋锁仅仅当作一个设置内核抢占的开关。如果内核抢占也不存在,那么自旋锁会在编译时被完全剔除出内核。
简单的说,自旋锁在内核中主要用来防止多处理器中并发访问临界区,防止内核抢占造成的竞争。另外自旋锁不允许任务睡眠(持有自旋锁的任务睡眠会造成自死锁——因为睡眠有可能造成持有锁的内核任务被重新调度,而再次申请自己已持有的锁),它能够在中断上下文中使用。
死锁:假设有一个或多个内核任务和一个或多个资源,每个内核都在等待其中的一个资源,但所有的资源都已经被占用了。这便会发生所有内核任务都在相互等待,但它们永远不会释放已经占有的资源,于是任何内核任务都无法获得所需要的资源,无法继续运行,这便意味着死锁发生了。自死琐是说自己占有了某个资源,然后自己又申请自己已占有的资源,显然不可能再获得该资源,因此就自缚手脚了。
信号量
Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。
信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况;只能在进程上下文中使用,因为中断上下文中是不能被调度的;另外当代码持有信号量时,不可以再持有自旋锁。
信号量基本使用形式为:
static DECLARE_MUTEX(mr_sem);//声明互斥信号量
if(down_interruptible(&mr_sem))
//可被中断的睡眠,当信号来到,睡眠的任务被唤醒
//临界区
up(&mr_sem);
信号量和自旋锁区别
虽然听起来两者之间的使用条件复杂,其实在实际使用中信号量和自旋锁并不易混淆。注意以下原则:
如果代码需要睡眠——这往往是发生在和用户空间同步时——使用信号量是唯一的选择。由于不受睡眠的限制,使用信号量通常来说更加简单一些。如果需要在自旋锁和信号量中作选择,应该取决于锁被持有的时间长短。理想情况是所有的锁都应该尽可能短的被持有,但是如果锁的持有时间较长的话,使用信号量是更好的选择。另外,信号量不同于自旋锁,它不会关闭内核抢占,所以持有信号量的代码可以被抢占。这意味者信号量不会对影响调度反应时间带来负面影响。
自旋锁对信号量
需求 建议的加锁方法
低开销加锁 优先使用自旋锁
短期锁定 优先使用自旋锁
长期加锁 优先使用信号量
中断上下文中加锁 使用自旋锁
持有锁是需要睡眠、调度 使用信号量

android 写app没有wakelock为什么还可以使用电量

  测试结论:   1)灭屏待机最省电:   a)任何App包括后台Service应该尽可能减少唤醒CPU的次数,比如IM类业务的长连接心跳、QQ提醒待机闹钟类业务的alarm硬时钟唤醒要严格控制;   b)每次唤醒CPU执行的代码应该尽可能少,从而让CPU迅速恢复休眠,比如申请wake lock的数量和持有时间要好好斟酌;   2)WiFi比蜂窝数据,包括2G(GPRS)、3G更省电:   a)尽量在WiFi下传输数据,当然这是废话,不过可以考虑在有WiFi的时候做预加载,比如应用中心的zip包、手Q web类应用的离线资源等;   b)非WiFi下,尽量减少网络访问,每一次后台交互都要考虑是否必须。虽然WiFi接入方式已经占到移动互联网用户的50%,但是是有些手机设置为待机关闭WiFi连接,即便有WiFi信号也只能切换到蜂窝数据;   测试分析:   1)灭屏的情况:   a)灭屏待机,CPU处于休眠状态,最省电(7mA);   b)灭屏传输,CPU被激活,耗电显著增加,即便是处理1K的心跳包,电量消耗也会是待机的6倍左右(45mA);   c)灭屏传输,高负载download的时候WiFi最省电(70mA),3G(270mA)和2G(280mA)相当,是WiFi的4倍左右;   2)亮屏的情况:   a)亮屏待机,CPU处于激活状态,加上屏幕耗电,整机电量消耗不小(140mA);   b)亮屏传输,如果只是处理1K的心跳包,耗电增加不多(150mA),即便是很大的心跳包(64K),消耗增加也不明显(160mA);   c)亮屏传输,高负载download的时候WiFi最省电(280mA),3G(360mA)和2G(370mA)相当,是WiFi的1.3倍左右;   3)Alarm唤醒频繁会导致待机耗电增加:   手机灭屏后会进入待机状态,这时CPU会进入休眠状态。Android的休眠机制介绍的文章很多,这里引用一段网络文章:   Early suspend是android引进的一种机制,这种机制在上游备受争议,这里 不做。这个机制作用在关闭显示的时候,在这个时候,一些和显示有关的 设备,比如LCD背光,比如重力感应器,触摸屏,这些设备都会关掉,但是系统可能还是在运行状态(这时候还有wake lock)进行任务的处理,例如在扫描SD卡上的文件等.在嵌入式设备中,背光是一个很大的电源消耗,所以android会加入这样一种机制.   Late Resume是和suspend配套的一种机制,是在内核唤醒完毕开始执行的.主要就是唤醒在Early Suspend的时候休眠的设备.   Wake Lock在Android的电源管理系统中扮演一个核心的角色. Wake Lock是一种锁的机制,只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得.这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过去以后自动解锁.如果没有锁了或者超时了,内核就会启动休眠的那套机制来进入休眠.   当用户写入mem或者standby到/sys/power/state中的时候, state_store()会被调用,然后Android会在这里调用request_suspend_state()而标准的Linux会在这里进入enter_state()这个函数.如果请求的是休眠,那么early_suspend这个workqueue就会被调用,并且进入early_suspend   简单的说,当用户按power键,使得手机进入灭屏休眠状态,Android系统其实是做了前面说的一些工作:关闭屏幕、触摸屏、传感器、dump当前用户态和内核态程序运行上下文到内存或者硬盘、关闭CPU供电,当然为了支持语音通讯,modern等蜂窝信令还是工作的。   这种情况下,应用要唤醒CPU,只有两种可能:   a)通过服务器主动PUSH数据,通过网络设备激活CPU;   b)设置alarm硬件闹钟唤醒CPU;   这里我们重点分析第二种情况。首先来看看什么是alarm硬件闹钟。Google官方提供的解释是:Android提供的alarm services可以帮助应用开发者能够在将来某一指定的时刻去执行任务。当时间到达的时候,Android系统会通过一个Intent广播通知应用去完成这一指定任务。即便CPU休眠,也不影响alarm services的服务,这种情况下可以选择唤醒CPU。   显然唤醒CPU是有电量消耗的,CPU被唤醒的次数越多,耗电量会越大。现在很多应用为了维持心跳、拉取数据、主动PUSH会不同程度地注册alarm服务,导致Android系统被频繁唤醒。这就是为什么雷军说Android手机在安装了TOP100的应用后,待机时间会大大缩短的重要原因。   比较简单评测CPU唤醒次数的方法是看dumpsys alarm,这里会详细记录从开机到当前的各个进程和服务唤醒CPU的次数和时间。通过对比唤醒次数和唤醒时间可以帮助我们分析后台进程和服务的耗电情况。Dumpsys alarm的输出看起来像这样:   其中544代表唤醒次数,38684ms代表唤醒时间。   4)Wake locks持有时间过长会导致耗电增加:   Wake locks是一种锁机制,有些文献翻译成唤醒锁。简单说,前面讲的灭屏CPU休眠还需要做一个判断,就是看是否还有任何应用持有wake locks。如果有,CPU将不会休眠。有些应用不合理地申请wake locks,或者申请了忘记释放,都会导致手机无法休眠,耗电增加。   原始数据:   测试方法:硬件设备提供稳压电源替代手机电池供电,在不同场景下记录手机平均电流。   测试设备:Monsoon公司的Power Monitor TRMT000141   测试机型:   测试用例:   灭屏benchmark(CPU进入休眠状态):7mA   灭屏WiFi:70 mA   灭屏3G net:270 mA   灭屏2G net GPRS:280mA   亮屏benchmark:140mA   亮屏wifi:280mA   亮屏3G net:360mA   亮屏2G:370mA   亮屏待机:140mA   亮屏wifi ping 1024包:150mA   亮屏wifi ping 65500包:160mA   灭屏 屏1024:45mA   灭屏ping 65500:55mA   关闭所有数据网络待机:7mA

京东的loc什么意思

信用证付款模式。
京东的LOC模式,是LetterofCredit缩写,也就是信用证付款模式,它是国际贸易中最主要、最常用的支付方式。

linux自旋锁使用时需要注意的几个地方

1、在内核多线程编程时,为了保护共享资源通常需要使用锁,而使用的比较多的就是spinlock,但需要注意的是:所有临界区代码都需要加锁保护,否则就达不到保护效果。也就是,访问共享资源的多个线程需要协同工作共同加锁才能保证不出错。在实际写代码时,有时候会网掉这一点,以致出现各种稀奇古怪的问题,而且很难找到原因。
2、在出现两个和多个自旋锁的嵌套使用时,务必注意加锁和解锁的顺序。
比如:在线程1中,spinlock A -》 spinlock B -》 spin unlock B -》 spin unlock A ;那么,在需要同步的线程2中,若需要加相同的锁,则顺序也应该保持相同,spinlock A -》 spinlock B -》 spin unlock B -》 spin unlock A ;否则,很有可能出现死锁。
3、spinlock保护的代码执行时间要尽量短,若有for循环之类的代码,则一定要确保循环可以在短时间可以退出,从而使得spinlock可以释放。
4、spinlock所保护的代码在执行过程中不能睡眠。比如,在spinlock和spinunlock之间不能调用kmalloc, copy_from_user,kthread_stop等调用,因为这些函数调用均有可能导致线程睡眠。
5、spinlock在实际使用时有如下几种类型,spin_lock,spin_lock_bh,spin_lock_irqsave。在具体使用时,需要根据被保护临界区锁处的上下文选择合适的spinlock类型。
spin_lock用于不同cpu线程间同步,spin_lock_bh和spin_lock_irqsave主要用于本cpu线程间的同步,前者关软中断,后者关硬中断。

spinlock等待时释放cpu吗

spin lock一般翻译为自旋锁,简单的理解是这样的,它和信号量差不多。 信号量:线程在无信号时会阻塞,阻塞时会释放CPU,让其它线程用。 自旋锁:自旋锁在得不到锁的状态下也会阻塞,但阻塞时不释放CPU,一直占用CPU,相当于在死循环。

LOC是什么名称的缩写

LOC的意思是伦敦奥运委员会(London Olympics Committee)。

第30届夏季奥林匹克运动会,又称2012年伦敦奥运会,2012年7月27日到2012年8月12日在英国首都伦敦举办。主会场是斯特拉特福德奥林匹克体育场(伦敦碗),温布利大球场、O2体育馆等为次体育场。

扩展资料

2012年伦敦奥运会口号为Inspire a generation(激励一代人)。口号在伦敦奥组委在国家皇家植物园举行的倒计时100天庆典活动之前的新闻公报中公布。

伦敦奥运会火炬由伦敦人爱德华·巴伯和杰·奥斯格比设计,共镂刻有8000个圆环,包涵着向8000名火炬手的人生成就致敬的寓意,是奥运史上也是第一次将人的因素加入到火炬中,表明了伦敦奥运会的创新性。

参考资料:百度百科-2012年伦敦奥运

英语中loc什么意思

国际奥林匹克委员会
国际奥林匹克委员会 (International Olympic Committee–IOC)
国际奥林匹克委员会,简称国际奥委会。1894年成立后,总部设在巴黎。1914年第一次世界大战爆发,为了避免战火的洗劫,1915年4月10日总部迁入这个有“国际文化城“之称的洛桑。这里有奥林匹克博物馆,奥林匹克研究中心,还有以顾拜旦名字命名的大街,体育场,等等。数十年来,洛桑为奥林匹克运动的发展,作出了重大贡献,无怪乎有人将洛桑称为“奥林匹克城“。国际奥委会也是在这个美好的城市逐渐发展、壮大而闻名于世的。
国际奥委会,是奥林匹克运动的领导机构,是一个不以营利为目的、具有法律地位和永久继承权的法人团体。根据现代奥林匹克运动创始人顾拜旦的理想,恢复奥林匹克运动的目的,在于增强各国运动员之间的友谊与团结,促进世界和平以及各国人民之间的相互了解,发展世界体育运动。《奥林匹克宪章》明文规定,国际奥委会的宗旨是:鼓励组织和发展体育运动和组织竞赛;在奥林匹克理想指导下,鼓舞和领导体育运动,从而促进和加强各国运动员之间的友谊;迄今已有近百年历史的国际奥委会,为之作出了积极努力和重大贡献。

如何使用spinlock要哪个头文件

在kernel2.4.20下面:
include 《linux/spinlock.h》
spinlock_t mysiglock = SPIN_LOCK_UNLOCKED;
unsigned int flags;
再加上这个
#include 《asm/system.h》

海尔洗衣机loc卜是什么意思

海尔滚筒洗衣机故障代码loc是进水超时故障,解决方法如下:
1、进水阀损坏,需要更换进水阀。
2、进水水管堵塞,需要清洗进水水管。
3、洗衣机断水,需要加水。
4、洗衣机水压不够,需要检查水源。
5、水位开关损坏,需要更换水位开关。
洗衣机一直进水不停是什么原因
1、连通器内有污物堵塞
洗衣机连通器出现堵塞时,就会出现一直进水的现象。因为此时桶内水位压力无法进入到连通器中,不能利用它来控制水位开关。
对于此现象我们需要将连接在水位开关上塑料管拔下,然后用力往盛水桶内吹气,直到里面的堵塞物被排出,再将塑料管安装上去便能正常使用。
2、水位开关故障
洗衣机水位开关出现故障时,也会出现这种现象。例如开关出现漏气,或是常开与常闭的触点出现接触不良等,这些都会导致洗衣机上水不停。这个需请专业人员来检查,如果无法修复好,就需更换一个新的水位开关。
3、水位开关触点调节螺丝松动
水位开关触点上的调节螺丝,在使用过程中,如果出现松动现象,也容易使其出现上水失控的现象。因为此螺丝松动之后,会改变它的动静触发运行,让水位开关处于失控的状态中。如果无法将其调节好,那么需更换一个新的。
4、连通器接口脱落
洗衣机水位开关是依靠连通器来连接盛水桶的,如果它们连接部位出现脱落的现象,那么也会造成上水不停的情况。这个处理方式会比较简单,只需连通器重新连接到盛水桶上,并保证连接牢固就行了。
5、排水管放置过低
如果洗衣机在上水时,排水管没有放好,放置过低的话,也有可能会造成一直上水现象。因为桶内的水一直往外排放,桶内水无法达到要求的高度,便会不停的上水,这种情况只需调整好排水管的高度就行了。