我是靠谱客的博主 落寞牛排,这篇文章主要介绍线程同步机制之自旋锁,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <pthread.h> #include <errno.h> /* 定义变量 */ pthread_spinlock_t spin; /*定义全局变量*/ int i = 0; /* 线程函数 */ void *thread_fun(void *arg) { int ret = 0; int x = 0; pthread_spin_lock(&spin); ret = pthread_spin_trylock(&spin);//已经上锁了,再调用该函数时,会立即返回错误 printf("ret = %dn", ret); for(x = 0; x < 10000000; x++) { i++; } pthread_spin_unlock(&spin); //pthread_spin_trylock(&spin); return NULL; } int main(void) { pthread_t tid; /*自选锁初始化*/ pthread_spin_init(&spin, PTHREAD_PROCESS_PRIVATE); /* 创建一个线程 */ if (pthread_create(&tid, NULL, thread_fun, NULL)== -1) printf("pthread_create()"); pthread_join(tid, NULL); pthread_spin_lock(&spin); printf("i = %dn",i); pthread_spin_unlock(&spin); pthread_spin_destroy(&spin); return 0; } /* int pthread_spin_init(pthread_spinlock_t *lock,int pshared); int pthread_spin_destroy(pthread_spinlock_t *lock) int pthread_spin_lock(pthread_spinlock_t *lock) int pthread_spin_trylock(pthread_spinlock_t *lock)//该函数不能自旋 int pthread_spin_unlock(pthread_spinlock_t *lock) 成功返回0,失败返回错误编号, PTHREAD_PROCESS_PRIVATE /*gcc pthread_spin.c -o spin -lpthread*/

在这里插入图片描述

最后

以上就是落寞牛排最近收集整理的关于线程同步机制之自旋锁的全部内容,更多相关线程同步机制之自旋锁内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部