unlock

iOS多线程编程:线程同步总结 NSCondtion

孤者浪人 提交于 2019-12-09 10:47:00
1:原子操作 - OSAtomic系列函数 iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件 <libkern/OSBase.h>。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到其他线程内对此变量的操作,因为这些操作都是原子式的。因为原子操作只能对内置类型进行操作,所以原子操作能够同步的线程只能位于同一个进程的地址空间内。 2:锁 - NSLock系列对象 iOS平台下的锁对象为NSLock对象,进入锁通过调用lock函数,解锁调用unlock函数(因为iOS中大部分的线程同步类都继承自NSLocking协议,所以其加锁/解锁的操作基本都为lock/unlock函数),同一个NSLock对象成功调用lock函数后,在其显式unlock之前任何线程都不能再对此NSLock对象加锁,以达到互斥访问的目的。除了lock函数,对NSLock加锁的函数还包括tryLock以及lockBeforeDate函数,lock函数在成功加锁之间会一直阻塞,而tryLock会尝试加锁,如果不成功,不会阻塞,而是直接返回NO,lockBeforeDate则是阻塞到传入的NSDate日期为止。 除了NSLock,iOS还提供了NSRecursive、NSConditionLock类型的锁类型

For api < 16: How to detect if PIN/password/pattern is required to unlock phone?

旧街凉风 提交于 2019-12-08 07:12:36
问题 I already know these two cases: 1) for devices using api >= 16, one could just use the method isDeviceSecure() from KeyguardManager and that would return true if any locking mechanism is used on the device (pattern, passcode, password, etc.) 2) for devices using api <= 15, one could do something like if (Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCK_PATTERN_ENABLED) == 0) , but that would only check for screen locking pattern (not passcode, password, etc.) So my question

iOS多线程编程:线程同步总结 NSCondtion

你说的曾经没有我的故事 提交于 2019-12-07 14:49:24
1:原子操作 - OSAtomic系列函数 iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件 <libkern/OSBase.h>。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到其他线程内对此变量的操作,因为这些操作都是原子式的。因为原子操作只能对内置类型进行操作,所以原子操作能够同步的线程只能位于同一个进程的地址空间内。 2:锁 - NSLock系列对象 iOS平台下的锁对象为NSLock对象,进入锁通过调用lock函数,解锁调用unlock函数(因为iOS中大部分的线程同步类都继承自NSLocking协议,所以其加锁/解锁的操作基本都为lock/unlock函数),同一个NSLock对象成功调用lock函数后,在其显式unlock之前任何线程都不能再对此NSLock对象加锁,以达到互斥访问的目的。除了lock函数,对NSLock加锁的函数还包括tryLock以及lockBeforeDate函数,lock函数在成功加锁之间会一直阻塞,而tryLock会尝试加锁,如果不成功,不会阻塞,而是直接返回NO,lockBeforeDate则是阻塞到传入的NSDate日期为止。 除了NSLock,iOS还提供了NSRecursive、NSConditionLock类型的锁类型

C++11 并发编程教程

无人久伴 提交于 2019-12-07 02:44:19
上一篇文章我们讲到如何启动一些线程去并发地执行某些操作,虽然那些在线程里执行的代码都是独立的,但通常情况下,你都会在这些线程之间使用到共享数据。一旦你这么做了,就面临着一个新的问题 —— 同步。 下面让我们用示例来阐释“同步”是个什么问题。 同步问题 我们就拿一个简单的计数器作为示例吧。这个计数器是一个结构体,他拥有一个计数变量,以及增加或减少计数的函数,看起来像这个样子: [译注:原文 Counter 的 value 并未初始化,其初始值随机,读者可自行初始化为 0 ] 1 2 3 4 5 6 struct Counter { int value; void increment(){ ++value; } }; 这并没什么稀奇的,下面让我们来启动一些线程来增加计数器的计数吧。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 int main(){ Counter counter; std::vector<std::thread> threads; for(int i = 0; i < 5; ++i){ threads.push_back(std::thread([&counter](){ for(int i = 0; i < 100; ++i){ counter.increment(); } })); } for(auto& thread :

AutoUnlock a Windows User Session

懵懂的女人 提交于 2019-12-06 11:19:16
Recently, I have been working on a CredentialProvider in order to unlock automatically (the trigger can be any event, so let’s say the end of a timer) a Windows Vista (or more recent version) user session. For that I read some useful articles on the subject, the change between GINA and this new architecture. http://msdn.microsoft.com/en-us/magazine/cc163489.aspx . I think, like everyone in the process of creating a custom CredentialProvider, I didn’t start from scratch but from the sample code provided by Microsoft. And then I tried to change the behaviour (things like logging) in the

Java并发编程 (二) 并发基础

杀马特。学长 韩版系。学妹 提交于 2019-12-06 10:51:54
一、CPU多级缓存-缓存一致性 1、CPU多级缓存 ​ 上图展示的是CPU高级缓存的配置,数据的读取和存储都经过高速缓存,CPU核心与高速缓存之间有一条特殊的快速通道;在这个简化的图中,主存和缓存都连接在系统总线上,这条总线同时还用于其他组件的通信。 ​ 高速缓存出现后不久,系统变得更加复杂,高速缓存和主存之间的速度差异被拉大,直到加入L1d(又叫一级缓存)的缓存,新加入的这一个缓存比高速缓存更大,但是更慢,由于加大一级缓存的做法从经济上是行不通的。所以有了二级缓存。甚至,现在有些系统有了三级缓存。 2、CPU cache: 为什么需要CPU cache? CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题(结构: CPU -> cache - >memory ). CPU cache 有什么意义? 1)时间局部性: 如果某个数据被访问,那么在不久的将来它很可能被再次访问; 2)空间局部性: 如果某个数据被访问,那么与它相邻的数据很快也可能被访问; 3、CPU多级缓存 - 缓存一致性(MESI) 用于保证多个CPU cache之间缓存共享数据的一致 ​ M 代表modify,表示被修改;指的是该缓存行只被缓存在该CPU的缓存中,并且是被修改过的,因此

How does the NSCondition work?

自作多情 提交于 2019-12-06 03:30:48
I'm using NSCondition class in this sence: - (void) method1 { [[cocoaCondition lock] lock]; while (!someCheckIsTrue) { [cocoaCondition wait]; } // Do something. [cocoaCondition unlock]; } - (void) method2 { [cocoaCondition lock]; // Do something. someCheckIsTrue = YES; [cocoaCondition signal]; [cocoaCondition unlock]; } I have two threads, thread1 runs the method1 and thread2 runs the method2. I hope that when [cocoaCondition wait] is called, the thread1 will be blocked. Then when the thread2 calls [cocoaCondition signal] , the thread1 will resume running. I've test the code and it works just

Ask for unlock pattern - Android

我的梦境 提交于 2019-12-06 01:06:26
问题 Is there a way, I can ask a user for perform the unlock operation on his phone using the set pattern(passcode, fingerprint, etc) to access certain features of my application? For example, in iOS, I generate an OTP based on a QR code. I can ask the user for the unlock pin before showing him the generated OTP token. I want the same for my android application. This prevents the misuse of the application. 回答1: You can create that intent with the KeyguardManager class, using the

JAVA内存模型

為{幸葍}努か 提交于 2019-12-05 19:28:41
#一、硬件内存和JAVA内存 硬件的效率与一致性 Java内存模型中规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作(读取、赋值)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程之间无法直接访问对方工作内存中的变量,线程间变量值的传递均需要在主内存来完成 #二、JAVA内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。 JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的内存。 简单来说,堆是Java代码可及的内存,留给开发人员使用的;非堆是JVM留给自己用的,包含方法区、JVM内部处理或优化所需的内存(如 JIT Compiler,Just-in-time Compiler,即时编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码。 JVM 内存包含如下几个部分: 堆内存(Heap Memory): 存放Java对象 非堆内存(Non-Heap Memory): 存放类加载信息和其它meta-data 其它(Other): 存放JVM 自身代码等 在JVM启动时

Is there a way to unlock android phone via adb, if I KNOW the pattern

纵饮孤独 提交于 2019-12-05 13:15:51
Basically, idea is to add a pattern unlock in script, running on a computer, connected to phone via adb. So, something like adb shell input events. Pattern is KNOWN, no hacking. This is an old question but in the interest of helping anyone who finds this post, check out my android-pattern-unlock shell script . It uses ADB's sendevent to draw a known unlock pattern into the lock screen. Worked for me and allowed me to gain access with a broken screen. I tried Matt Wilson's android-pattern-unlock shell script on my S4, but I had to make some adjustments to make it work. Here are the steps I