什么是Linux编程?Linux编程培训哪个好?

想知道Linux编程培训哪个好?先来了解一下什么是Linux编程吧!Linux编程,比需要了解线程的问题。

线程的信号量主要就是实现对公共资源的一种控制管理。当公共资源增加时,信号量的值增加;当公共资源减少时,信号量的值减少;只有信号量的值大于0时,才能访问信号量所代表的公共资源。其实功能和之前的ucos的信号量功能类似。

1 线程信号量初始化sem_init

 int sem_init(sem_t *sem, int pshared, unsigned int value);

功能介绍:

该函数主要的功能是创建一个信号量,设置该信号量的值,并且设置信号量的使用范围。信号量创建成功后,可以对其进行加减操作。

参数说明:

第一个参数sem是一个指向信号量结构的指针,当信号量初始化成功后,可以的这个信号量指针进行加减操作;第二个参数表示信号量的共享属性,当其值不为0时,信号量可以在进程间共享,如果等于0,则只能在同一个进程中的多个线程间共享;第三个参数用于设置信号量初始化时候的值。

2 线程信号量增加函数sem_post

  int sem_post(sem_t *sem);

功能介绍:

该函数用于增加信号量的值,每次增加值为1。当有线程在等待该信号量,则等待信号量返回,不增加信号量的值。

参数说明:sem参数是初始化时候创建的信号量结构体,用于记录信号量值得参数。

3 线程信号量减少函数sem_wait

  int sem_wait(sem_t *sem);

功能介绍:

该函数用于减少信号量的值,每次减少值为1。当信号量的值为0,则线程会阻塞一直等待信号量的值大于0为止,当值为0时,不在减少。

参数说明:

  sem参数是初始化时候创建的信号量结构体。

4 线程信号量的销毁函数sem_destroy

  int sem_destroy(sem_t *sem);

功能介绍:

函数用于释放创建的信号量。

参数说明:

  sem参数是初始化时候创建的信号量结构体。

使用线程的信号量进行通信,可以有效的对线程资源进行合理的分配,同时可以使线程以一个合理的方式进行调度。下面的代码是一个小小的实例,用很常规的方法来使用信号量,当线程获得获得信号量之后,在处理完相应的操作之后会主动的释放掉信号量。其实可以根据信号量的wait和post自己设计使用信号量。不过需要注意的是在wait和post函数分开使用时,可能会因为线程优先级等问题,post和wait被调用的次数不是对等的,这时候这时候可能出现的问题是不可控的,在这种方式设计程序时,需要把大部分的情况考虑进去,当然可能出现的情况的种数也是从0到1质变,从1到n量变得过程。

猜你喜欢

转载自blog.51cto.com/13694927/2119569