1.线程安全问题:
每个线程都有自己的栈,而局部变量是储存在栈中的,这就意味着每个线程都有一份自己的“局部变量”,如果线程仅仅使用“局部变量”那么就不存在线程安全问题。
那如果多个线程共用一个全局变量呢?
多线程不一定存在线程安全问题,多线程访问全局变量也不一定有安全问题,多线程如果对全局变量只读那也没有安全问题。
那么多线程的线程安全问题的前提是:
<1>有全局变量
<2>对全局变量不是只读,有写的动作。
我写一段代码让两个线程对全局变量同时有写的动作
#include"stdafx.h"
#include<stdio.h>
int Tickets = 10;
DWORD WINAPI ThreadProc1(_In_ LPVOID lpParameter)
{
while (Tickets > 0) //判断是否还有余票
{
printf("还有:%d张票\n", Tickets);
Tickets--; //这里就是写了
printf("卖出一张,还有:%d张\n", Tickets);
}
return 0;
}
int main(int argc, char argv[])
{
DWORD result1;
DWORD result2;
HANDLE hThread[2];
hThread[0] = CreateThread(NULL, 0, ThreadProc1, NULL, 0, NULL);//创建线程
hThread[1] &#