多线程的那些事(之数据同步)
来源:互联网 发布:linux 执行脚本 编辑:程序博客网 时间:2024/06/05 04:26
线程同步:是指线程之间所具有的一种制约关系,一个线程的执行依赖于另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒
多线程的创建其实十分简单,在windows系统下面有很多函数可以创建多线程,比如说_beginthread。我们可以用它来创建一个简单的多线程代码。
// ThreadDataSync1.cpp : 定义控制台应用程序的入口点。//多线程的那些事(之数据同步1)#include "stdafx.h"#include <Windows.h>#include <process.h>#include <stdio.h>unsigned int val=0;void PrintInfo(void* argv) { while(1) { printf("&val=%x , val=%d\n",&val,val); val++; Sleep(1000); }}int _tmain(int argc, _TCHAR* argv[]){ _beginthread(PrintInfo,0,NULL); _beginthread(PrintInfo,0,NULL); while(1) { Sleep(1); } system("pause");return 0;}
通过上面的示例,我们看到作为共享变量的val事实上是可以被所有的线程访问的。这就是线程数据同步的最大优势——方便,直接。因为线程之间除了堆栈空间不一样之外,代码段和数据段都是在一个空间里的。所以,线程访问公共数据,就可以访问公共数据,没有任何的限制。
当然,事物都有两面性。这种对公共资源的访问模式也会导致问题的——数据不同步了也就是数据被破坏了。它是由于系统CPU时间片分配方式引起的。虽然在某一时刻,只有一个线程占用CPU(单CPU时),但是没有办法知道在什么时候,在什么地方线程被打断,这样如何保护线程之间不破坏彼此的数据就显得格外重要了。解决此问题通常有4中种方法:临界区对象(CriticalSection),互斥量对象(Mutex),信号量对象(Semaphore),事件对象(Event)。
- 多线程的那些事(之数据同步)
- 数据同步的那些事
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那点儿事(之数据同步)
- 多线程的那些事(之基础篇)
- 多线程的那些事
- 多线程的那些事
- 多线程(四)线程的同步之同步代码块
- 多线程(四)线程的同步之同步方法
- 【JAVA】多线程之synchronized 同步数据 方法
- java多线程采集+线程同步-【多线程数据采集之四】
- Geos编译方法详谈(Release版本)
- WDK驱动开发中WCSSTR导致的蓝屏
- 练习1.1.5
- newstyle方式的i2c设备驱动
- JspFragment类
- 多线程的那些事(之数据同步)
- 黑马程序员 交换数组中的元素
- Shell && vs || operator
- 练习1.1.6
- CSS @规则(at-rules)
- mysql索引优化
- 练习1.1.7
- 开源一套DirectUI界面库
- Windows端口大全及端口关闭方法