首先进程就好比是一个线程的容器,可以用来看做是用来装线程,一个进程最少有一个线程,一个线程也最少有一个进程, 1.线程的缺点 线程开的越多则会导致内存占用过多 会导致并发从而导致死机 线程在管理和协调的过程中比较难(一般处理都是加锁) 2.线程的优点 增加cpu的利用率 提高程序的整体速度 3.线程 ...
分类:
编程语言 时间:
2017-10-16 22:01:21
阅读次数:
207
1)初始化线程锁 静态初始化: 或者动态初始化: 其中 attr 用于指定互斥锁属性,如果为NULL则使用缺省属性。 函数成功执行后,互斥锁被初始化为未锁住态。 2)锁的操作 2.1)加锁: pthread_mutex_trylock() 方式在锁被占用的时候不会阻塞,而是返回EBUSY 2.2)释 ...
分类:
编程语言 时间:
2017-09-21 23:21:29
阅读次数:
258
4.内存使用率:内存使用率的相关属性包括页面调度或页面交换、加锁、线程迁移中的让步式和抢占式上下文切换。当应用运行所需的内存超过可用物理内存时,就会发生内存页面交换,系统在进行页面交换或使用虚拟内存时,应用会表现出明显的性能问题。为了应对这种可能出现的情况,通常要为系统配置swap空间,swap空间...
分类:
编程语言 时间:
2015-12-21 19:51:04
阅读次数:
174
安全解决 -- 互斥锁@synchronized(self) { //开始加锁,操作}优:解决多线程抢夺资源产生的数据安全问题缺:消耗CPU资源多使用前提:多条线程执行一块代码时加锁线程同步:@synchronized()多条线程在同一条线上执行(按顺序执行,与线程并发不同)nonatomic 与 ...
分类:
编程语言 时间:
2015-07-29 09:06:31
阅读次数:
147
单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且这个实例易于供外界访问。永远只分配一次内存给这个类。由于在调用alloc方法的时候,都会调用allocWithZone,所以要重写这个方法,保证只分配一次内存。 dispatch_once这个方法可以保证只调用一次,并且会自动加锁,线程...
分类:
其他好文 时间:
2015-07-10 20:46:48
阅读次数:
145
线程互斥机制Mutex变量就像一把“锁”,是线程同步和保护共享数据的主要方式
Mutex可以用来阻止竞争
Pthreads中Mutex的基本概念
在任何时候,只有一个线程能够获得Mutex
尽管几个线程想获取一个Mutex,但是只有一个线程能够成功
其他线程需要等待,直到获取Mutex的线程放弃Mutex
线程必须轮流访问需要保护的数据
线程经常利用mutex来加锁需要更新的全局变量,...
分类:
编程语言 时间:
2015-05-16 10:35:41
阅读次数:
253
有两种机制防止代码块受并发访问的干扰:1、一个是使用synchronized关键字。2、使用ReentrantLock类。(通过显示定义同步锁对象来实现同步。)同步锁(lock)方法是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程...
分类:
其他好文 时间:
2015-04-23 13:04:56
阅读次数:
133
有两种机制防止代码块受并发访问的干扰:1、一个是使用synchronized关键字。2、使用ReentrantLock类。(通过显示定义同步锁对象来实现同步。)同步锁(lock)方法是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程...
分类:
其他好文 时间:
2015-04-23 12:27:34
阅读次数:
147
近在读《深入理解并行编程》,是C的,前面的200页感觉是通用的思想,前面提到有一个计数器的问题,于是就自己想着用java来实现下.中间有遇到问题: 1.假设只有两个线程,一读一写,是否需要给这个资源加锁? 2.线程状态的改变先上代码再说吧: public class Test { pr...
分类:
编程语言 时间:
2015-04-22 13:04:05
阅读次数:
147
首先,来看下使用system.threading.monitor对资源进行保护的思路:
即,使用排它锁,当线程A需要访问某一资源时,对其进行加锁,线程A获取到锁以后,任何其他线程如果再次对资源进行访问,则将其放到等待队列中,知道线程A释放锁之后,再将线程从队列中取出。
主要的两个方法:
Enter
Exit
获取锁
...
分类:
其他好文 时间:
2015-01-20 20:31:34
阅读次数:
144