博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Multithread 之 introduction
阅读量:4633 次
发布时间:2019-06-09

本文共 931 字,大约阅读时间需要 3 分钟。

  • Why multithreading?(摘自《win32 多线程程序设计》)
    • 单线程程序就像超级市场中唯一的一位出纳,这个出纳对于小量采购可以快速结账。但如果有人采购了一大车货品,结账就需要点时间了,其他每个人都必须等待。
    • 多线程程序就像是有一群出纳员,每人负责一条线,某些线专门用来为大买家服务,其他线处理小市民的采购。一条线瘫痪了,并不会影响其他线。
  • 同步(synchronous)与异步(asynchronous)(摘自《win32 多线程程序设计》)
    • 同步:程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续下去。
    • 异步:程序1调用程序2后,径自继续自己的下一个动作。
  • Why synchronization?
    • 在抢先式多任务操作系统中,操作系统不停的在多个线程之间切来切去。我们对此无法控制,只能尽力使我们的程序适应这种环境,也就是进行同步控制。
    • 代码:
      #include 
      #include
      int a[ 5 ]; void Thread( void* pParams ) { int i, num = 0; while ( 1 ) { for ( i = 0; i < 5; i++ ) a[ i ] = num;//此循环中,被主线程抢占,导致某些行打印数据不一致 num++; } } int main( void ) { _beginthread( Thread, 0, NULL ); while( 1 ) printf("%d %d %d %d %d\n", a[ 0 ], a[ 1 ], a[ 2 ], a[ 3 ], a[ 4 ] ); return 0; }
    • 结果:
  • 参考:

转载于:https://www.cnblogs.com/dahai/archive/2011/07/15/2107072.html

你可能感兴趣的文章
25个iptables常用示例
查看>>
react-navigation
查看>>
【DSP开发】C6000非多核非KeyStone系列DSP中断系统
查看>>
Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件
查看>>
Jenkins实现SVN+Maven+Java项目的持续集成
查看>>
Java:全局变量(成员变量)与局部变量
查看>>
101
查看>>
2014-01-04 SQL练习
查看>>
Android 悬浮窗口
查看>>
封装了一套WeCenter的IOS SDK
查看>>
Linux 用户行为日志记录
查看>>
SpringBoot学习之启动方式
查看>>
Linux Centos 7 安装配置nginx
查看>>
Java学习笔记---字符类型
查看>>
SQL Server Extended Events 进阶 3:使用Extended Events UI
查看>>
Python3中对Dict的内存优化
查看>>
软件行业项目经理主要的职责是什么?(转)
查看>>
git笔记
查看>>
Java 内部类
查看>>
maven nexus 3 third party 构件上传
查看>>