人人范文网 范文大全

Linux编程培训哪个好

发布时间:2020-03-02 12:48:23 来源:范文大全 收藏本文 下载本文 手机版

中国IT职业教育领先品牌

精品课程 全程面授

Linux编程培训哪个好

想知道Linux编程培训哪个好?先来了解一下什么是Linux编程吧!

Linux编程,比需要了解线程的问题。 线程间通信之信号量

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

1 线程信号量初始化sem_init

intsem_init(sem_t *sem, intpshared, unsigned int value); 功能介绍:

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

千锋教育www.daodoc.com

中国IT职业教育领先品牌

精品课程 全程面授

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

intsem_post(sem_t *sem); 功能介绍:

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

sem参数是初始化时候创建的信号量结构体,用于记录信号量值得参数。 3 线程信号量减少函数sem_wait

intsem_wait(sem_t *sem); 功能介绍:

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

sem参数是初始化时候创建的信号量结构体。 4 线程信号量的销毁函数sem_destroy

intsem_destroy(sem_t *sem); 功能介绍:

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

千锋教育www.daodoc.com

中国IT职业教育领先品牌

精品课程 全程面授

参数说明:

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

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

1 #include 2 #include 3 #include 4 #include 5

6 sem_tsem; 7 intsemValue; 8

9 void *pthread_wait(void *argv) 10 { 11

while(1)

千锋教育www.daodoc.com

中国IT职业教育领先品牌

精品课程 全程面授

{ 13

sem_wait(&sem); 14

sem_getvalue(&sem, &semValue); 15

printf(\"This is in phtread WAIT function! sem = %d\\n\", semValue); 16

sem_post(&sem); 17

sleep(1); 18

} 19

pthread_exit(\"exit wait pthread!\\n\"); 20 } 21

22 void *pthread_post(void *argv) 23 { 24

while(1) 25

{ 26

sem_wait(&sem); 27

sem_getvalue(&sem, &semValue); 28

printf(\"This is in phtread POST function! sem = %d\\n\", semValue); 29

sem_post(&sem); 30

sleep(1); 31

}

千锋教育www.daodoc.com

中国IT职业教育领先品牌

精品课程 全程面授

32

pthread_exit(\"exit post pthread!\"); 33 } 34

35 intmain(void) 36 { 37

pthread_tpt[2]; 38

void *ret; 39

40

sem_init(&sem,0,2); 41

pthread_create(&pt[0], NULL, &pthread_wait, NULL); 42

pthread_create(&pt[1], NULL, &pthread_post, NULL); 43

pthread_join(pt[0], &ret); 44

printf(\"return value %s\", ret); 45

pthread_join(pt[1], &ret); 46

printf(\"return value %s\", ret); 47

48

return 0; 49 }

上面代码的运行结果如下,因为是线程采用了无限循环的方式,所以pthread_exit和pthread_join不会执行到。

千锋教育www.daodoc.com

中国IT职业教育领先品牌

精品课程 全程面授

如果将上面代码中的第26行注释掉,运行结果如下,可以看到信号量的值一直在增加,就如上面提到的因为sem_wait函数和sem_post函数不能同时使用时,会出现一些不可控的运行结果。也可以利用这种情况,设计程序。

以上就是千锋Linux学院的学习笔记。 另附心得体会一篇:

从零基础开始学Linux或者是转行学习Linux,参加培训会保证你在单位时间内学到更多,毕竟随着Linux行业的快速发展,未来必将会面临更多的竞争,所以只有不遗余力的把自己打造成一把利剑,从专业度到职业素质,只有比别人更突出和优秀,才能够在这个相互选择的世界当中拥有更多的选择权利。现在想要学习Linux技术,只有通过参加培训才可以保证快速掌握所学知识和技能,所

千锋教育www.daodoc.com

中国IT职业教育领先品牌

精品课程 全程面授

以培训是比较靠谱的。

Linux编程培训哪个好?千锋教育的Linux课程专注于当前热门的Linux相关技术,就Linux而言,内容全面而细致的。Linux教学团队由众多名师打造,拥有多年教学经验和高超的Linux授课技巧和实战视野,让你理论和实战兼得。

千锋教育www.daodoc.com

Linux网络编程培训哪个好专题

学习Linux编程哪个好

Linux编程培训哪家好

英语口语培训机构哪个好

嵌入式linu学习心得

Linux网络编程培训哪家好

ppt哪个好

财务软件哪个好

保险哪个好

嵌入式linux培训哪个好,必看

Linux编程培训哪个好
《Linux编程培训哪个好.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档