zoukankan      html  css  js  c++  java
  • Multithread 之 introduction

    • Why multithreading?(摘自《win32 多线程程序设计》)
      • 单线程程序就像超级市场中唯一的一位出纳,这个出纳对于小量采购可以快速结账。但如果有人采购了一大车货品,结账就需要点时间了,其他每个人都必须等待。
      • 多线程程序就像是有一群出纳员,每人负责一条线,某些线专门用来为大买家服务,其他线处理小市民的采购。一条线瘫痪了,并不会影响其他线。
    • 同步(synchronous)与异步(asynchronous)(摘自《win32 多线程程序设计》)
      • 同步:程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续下去。
      • 异步:程序1调用程序2后,径自继续自己的下一个动作。
    • Why synchronization?
      • 在抢先式多任务操作系统中,操作系统不停的在多个线程之间切来切去。我们对此无法控制,只能尽力使我们的程序适应这种环境,也就是进行同步控制。
      • 代码:
          #include <process.h>
        
          #include <stdio.h>
        
          
          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;
          }
        
      • 结果:
    • 参考:http://www.codeproject.com/KB/threads/sync.aspx
  • 相关阅读:
    cenos7 安装samba
    Cenos7 学习笔记
    mysql学习笔记(一)
    Qt 程序打包发布总结 转
    主机名由localhost变成bogon是怎么回事,怎样变回localhost这个名字?
    Heap Size 与 Stack Size
    数据字节对齐案例
    C语言进阶日志二
    位带操作
    Stm32高级定时器(转自:luowei_memory)
  • 原文地址:https://www.cnblogs.com/dahai/p/2107072.html
Copyright © 2011-2022 走看看