37 windows_37_Thread_InterLock 线程-原子锁

windows_37_Thread_InterLock 线程-原子锁

  1. // windows_37_Thread_InterLock.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include "windows.h"
  5. long g_nValue1 = 0;
  6. long g_nValue2 = 0;
  7. DWORD WINAPI InterProc1( LPVOID pParam )
  8. {
  9. for (int nIndex = 0; nIndex < 10000000;nIndex++)
  10. {
  11. //普通的加加
  12. g_nValue1++;
  13. }
  14. return 0;
  15. }
  16. DWORD WINAPI InterProc2( LPVOID pParam )
  17. {
  18. for (int nIndex = 0; nIndex < 100;nIndex++)
  19. {
  20. //原子锁加加
  21. //g_nValue2++;
  22. InterlockedIncrement( &g_nValue2 );
  23. }
  24. return 0;
  25. }
  26. void Create( )
  27. {
  28. DWORD nThreadID = 0;
  29. HANDLE hThread[4] = { NULL };
  30. hThread[0] = CreateThread( NULL, 0, InterProc1, NULL, 0, &nThreadID );
  31. hThread[1] = CreateThread( NULL, 0, InterProc1, NULL, 0, &nThreadID );
  32. hThread[2] = CreateThread( NULL, 0, InterProc2, NULL, 0, &nThreadID );
  33. hThread[3] = CreateThread( NULL, 0, InterProc2, NULL, 0, &nThreadID );
  34. WaitForMultipleObjects( 4, hThread, FALSE, INFINITE );
  35. printf( "%ld\n", g_nValue1 );
  36. printf( "%ld\n", g_nValue2 );
  37. }
  38. int _tmain(int argc, _TCHAR* argv[])
  39. {
  40. Create( );
  41. return 0;
  42. }

来自为知笔记(Wiz)

时间: 2024-10-13 22:44:24

37 windows_37_Thread_InterLock 线程-原子锁的相关文章

学习C#线程

无意间看到了关于C#线程的讲解.经过一下午的学习后,慢慢的对线程也有了一定的理解.这里讲解的是最基础的内容,包括线程的创建.睡眠.等待.终止. 实验环境:Visual studio 2010. 使用语言:C# 内容:创建.睡眠.等待.中止线程 1.创建新线程对象 Thread t=new Thread(); 1 using System; 2 using System.Threading; 3 using System.Collections.Generic; 4 using System.Li

Java线程学习整理--1--守护线程

1.什么是守护线程? 今天老师讲解我才知道有守护线程这回事!原来守护线程经常存在于我们的身边,比如:一个免费的网页游戏,里面都会或多或少有些插入性的广告!! 一般情况下,我们不会去点击这些广告的,但是广告商是需要点击量的啊!所以制作游戏的人会背地里使用守护线程去访问这个广告界面,但是我们用户是不知道 的!就是守护线程一般对用户不可见,对背后的程序员可见! 再比如:我们使用的QQ软件,我们可以一边聊天,一边更新QQ软件!当我们聊天结束,关闭QQ的时候,你会发现,QQ更新的操作也被终止了! 其实:更

线程常用操作方法

在多线程中所有的操作方法都是从Thread类开始的,所有的操作基本上都在Thread类中. 1,线程名称 1,在Thread类中可以通过getName()方法取得线程名称,通过setName()设置线程名称. 2,线程的名称一般在启动线程前设置,但也允许为运行的线程设置名称,允许两个Thread对象有相同名称,但是应该避免. 3,如果程序没有为线程指定名称,系统会自动为线程设置名称. class MyThread implements Runnable{ // 实现Runnable接口 publ

ArrayLLis 线程不安全的学习(需要修改)

package 线程安全测试;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; class  Output implements Runnable{    private ArrayList<Integer> array=null;    public Output(List<

线程1

一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe文件,这个叫做一个进程.程序的执行过程都是这样的:首先把程序的代码放到内存的代码区里面,代码放到代码区后并没有马上开始执行,但这时候说明了一个进程准备开始,进程已经产生了,但还没有开始执行,这就是进程,所以进程其实是一个静态的概念,它本身就不能动.平常所说的进程的执行指的是进程里面主线程开始执行了,

java基础学习总结——线程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——线程(二) 一.线程的优先级别 线程优先级别的使用范例: 1 package cn.galc.test; 2 3 public class TestThread6 { 4 public static void main(String args[]) { 5 MyThread4 t4 = new MyThread4(); 6 MyThread5 t5 = new MyThread5(); 7 Thread t1

java基础学习总结——线程(一)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——线程(一) 一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe文件,这个叫做一个 进程.程序的执行过程都是这样的:首先把程序的代码放到内存的代码区里面,代码放到代码区后并没有马上开始执行,但这时候说明了一个进程准备开始,进程已 经产生了,但还没有开始执行,这就是

一个Windows C++的线程池的实现

此线程池所依赖的线程类,请参看<一个Windows C++的线程类实现>: ThreadPoolExecutor.h 1 #ifndef __THREAD_POOL_EXECUTOR__ 2 #define __THREAD_POOL_EXECUTOR__ 3 4 #include "Thread.h" 5 #include <set> 6 #include <list> 7 #include <windows.h> 8 9 class

java线程理解002

本章节主要是学习一种新的创建线程的方法,熟悉线程的常用方法,线程同步. 利用实现Runnable接口创建一个新的线程. 1 package interThread_v001; 2 3 public class Runable_v001 implements Runnable 4 5 { 6 // 线程体 7 8 public void run() 9 10 { 11 for(int i=0; i<100; i++) 12 { 13 14 System.out.println("Runnab