搜档网
当前位置:搜档网 › Linux编程linux视频教程(完整版)

Linux编程linux视频教程(完整版)

Linux编程linux视频教程(完整版)
Linux编程linux视频教程(完整版)

Linux编程linux视频教程(完整版)-千锋教育,千锋最新inux入门基础视频免费下载免费地址:

Linux视频基础课程:https://www.sodocs.net/doc/4d2017858.html,/s/1c13ddvE

下面小编带你了解一下Linux编程吧!

Linux下的网络编程指的是socket套接字编程,入门比较简单。在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾。总感觉每次看的时候都有收获,但是每次看完了之后,过段时间不看,重新拾起这些知识的时候又要从头开始,所以,在这里做个笔记也算是做个模板,以后可以直接从某一个阶段开始接着玩……

而说到socket就不得不提到线程

线程间通信之互斥锁

线程互斥锁主要的功能是在一段时间内,只允许一个线程对一段代码或者资源进行访问的机制。当有一个线程获得互斥锁后,其他线程如果想获得互斥锁就会被阻塞,直到占有互斥锁的线程释放互斥锁为止。线程的互斥主要包含的函数有如下几个:

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);

int pthread_mutex_lock(pthread_mutex_t *mutex);

int pthread_mutex_trylock(pthread_mutex_t *mutex);

int pthread_mutex_unlock(pthread_mutex_t *mutex);

int pthread_mutex_destory(pthread_mutex_t *mutex);

功能介绍:

pthread_mutex_init函数主要的功能是初始化一个互斥锁,并且设置该互斥锁的属性;pthread_mutex_lock主要的功能是给互斥锁上锁,如果一个线程给互斥锁上锁之后,其他线程想获得该锁的使用权,必须要阻塞等待,直到占有互斥锁的线程释放该锁;函数是pthread_mutex_lock函数的非阻塞版本。如果mutex参数所指定的互斥锁已经被锁定的话,调用pthread_mutex_trylock函数不会阻塞当前线程,而是立即返回一个值来描述互斥锁的状况;pthread_mutex_unlock给互斥锁解锁,线程调用该函数之后会释放掉已经上锁的互斥锁;pthread_mutex_destory是init创建的互斥锁释放掉。

参数说明:

pthread_mutex_t是互斥锁机制内核私有的数据结构,用于实现互斥锁机制必不可少的元素。上述函数已经很好的诠释了如何使用该参数。

pthread_mutexattr_t是用来描述线程互斥锁属性的结构体,初始化时,如果属性参数设置为NULL的话,则表示使用默认设置。

个人感觉互斥锁就是信号量的值为1时候的一种特殊情况,只是给互斥锁加了一些限制,并且没有设置值而已。互斥锁中的lock相当于信号量中的wait,而unlock相当于post操作。获取互斥锁并且lock上锁之后,只能通过unlock 解锁才可以重新获取互斥锁,互斥锁主要的功能就是对线程资源进行保护,同一个时间只有一个线程可以获得互斥锁,对资源进行使用,只有互斥锁被释放,其他的线程才可以重新获得互斥锁。不想信号量一样,可以通过设置信号量的值来实现多个线程可以同时操作使用线程资源。下面是一个互斥锁的实例。

1 #include

2 #include

3 #include

4

5 pthread_mutex_t mutex;

6 int mutexCounter;

7

8 void *pthread_mutex_LOCK(void *argv)

9 {

10 while(1)

11 {

12 pthread_mutex_lock(&mutex);

13 mutexCounter++;

14 printf("This is in phtread mutex LOCK function! Counter = %d\n", mutexCounter);

15 pthread_mutex_unlock(&mutex);

16 sleep(1);

17 }

18 pthread_exit("exit wait pthread!\n");

19 }

20

21 void *pthread_mutex_UNLOCK(void *argv)

22 {

23 while(1)

24 {

25 pthread_mutex_lock(&mutex);

26 mutexCounter--;

27 printf("This is in phtread mutex UNLOCK function! Counter = %d\n", mutexCounter);

28 pthread_mutex_unlock(&mutex);

29 sleep(1);

30 }

31 pthread_exit("exit post pthread!");

32 }

33

34 int main(void)

35 {

36 pthread_t pt[2];

37 void *ret;

38

39 pthread_mutex_init(&mutex, NULL);

40 pthread_create(&pt[0], NULL, &pthread_mutex_LOCK, NULL);

41 pthread_create(&pt[1], NULL, &pthread_mutex_UNLOCK, NULL);

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

43 printf("return value %s", ret);

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

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

46

47 return 0;

48 }

上面代码的运行结果如下所示,按逻辑来说应该是一个LOCK函数,一个UNLOCK函数交替运行,但实际的运行结果却是如下图所示,主要的原因是在运行完两个函数之后,都处于sleep等待状态,因为处理器运行速度太快,两个函数完成等待的时间相同,这时候线程的调度就不是按照原来的逻辑了。所以在线程函数处理内容较少时,要注意时序对对编程逻辑的影响。

以上就是千锋Linux学院的学习笔记。

另附心得体会一篇:

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

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

相关主题