cas

Posted elseliving

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cas相关的知识,希望对你有一定的参考价值。

 1 http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552013373236132/
 2 
 3 https://www.cnblogs.com/wzjhoutai/p/6838104.html
 4 
 5  
 6 
 7  
 8 
 9 #include<stdio.h>
10 #include<string.h>
11 #include<stdlib.h>
12 #include<pthread.h>
13 
14 int count = 0;
15 void *func_cas(void*arg)
16 {
17     int i=0;
18     int temp = 0;
19 
20     for(i = 0;i < 20000;i++)
21     {
22         while(1)
23         {
24             temp = count;
25             if(__sync_bool_compare_and_swap(&count, temp, temp+1))
26                 break;
27         }
28 
29     }
30 }
31 
32 void *func(void*arg)
33 {
34     int i=0;
35 
36     for(i = 0;i < 20000;i++)
37     {
38         count++;
39     }
40 }
41 
42 
43 int main()
44 {
45     pthread_t id[10];
46     int i=0;
47     for(i=0 ;i< sizeof(id)/sizeof(id[0]);i++)
48     {
49         pthread_create(&id[i],NULL,func_cas,NULL);
50     }
51 
52     for(i=0 ;i< sizeof(id)/sizeof(id[0]);i++)
53     {
54         pthread_join(id[i],NULL);
55     }
56 
57     printf("count = %d\\n",count);
58 
59     count = 0;
60 
61     for(i=0 ;i< sizeof(id)/sizeof(id[0]);i++)
62     {
63         pthread_create(&id[i],NULL,func,NULL);
64     }
65 
66     for(i=0 ;i< sizeof(id)/sizeof(id[0]);i++)
67     {
68         pthread_join(id[i],NULL);
69     }    
70     printf("\\ncount = %d\\n",count);
71 }
72 
73 
74             

 

以上是关于cas的主要内容,如果未能解决你的问题,请参考以下文章

注意,不能错过的CAS+volatile实现同步代码块

注意,不能错过的CAS+volatile实现同步代码块

注意,不能错过的CAS+volatile实现同步代码块

SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接

[多线程进阶]CAS与Synchronized基本原理

来自 CAS 的 LDAP 用户属性