社区
C语言
帖子详情
多线程编程中使用STATIC局部变量问题
heskyII
2007-08-02 11:35:24
以下函数会在一个多线程程序中被调用,会产生什么问题???
int GetMsgId(char *MsgIdBuf)
{
static unsigned int sequencenum = 0; //序列号0000--9999。到了9999自动丛0开始
sprintf(MsgIdBuf, "%04d",sequencenum++);
if (sequencenum > 9999)
{
sequencenum = 0;
}
return 0;
}
...全文
642
8
打赏
收藏
多线程编程中使用STATIC局部变量问题
以下函数会在一个多线程程序中被调用,会产生什么问题??? int GetMsgId(char *MsgIdBuf) { static unsigned int sequencenum = 0; //序列号0000--9999。到了9999自动丛0开始 sprintf(MsgIdBuf, "%04d",sequencenum++); if (sequencenum > 9999) { sequencenum = 0; } return 0; }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
softwarewander
2007-08-02
打赏
举报
回复
最主要看用途,
不过一般来说,静态变量初始化放到函数中, 尤其是大量被调用的时候,会有问题。
loops
2007-08-02
打赏
举报
回复
#define ThreadSafe __declspec( thread )
static ThreadSafe unsigned int sequencenum = 0;
可以为每一个线程都单独创建一个全局变量。
windows的消息队列,也是每个线程有一个。
heskyII
2007-08-02
打赏
举报
回复
就是需要专门为这个变量进行lock/unluck操作?
ouyh12345
2007-08-02
打赏
举报
回复
静态变量的初始化,放到函数中
--
这没有问题
softwarewander
2007-08-02
打赏
举报
回复
加锁,要看lz的需求了,
ouyh12345
2007-08-02
打赏
举报
回复
就是你想要的和实际得到的不一定符合
softwarewander
2007-08-02
打赏
举报
回复
静态变量的初始化,放到函数中,好像有点。。。
晨星
2007-08-02
打赏
举报
回复
当多个线程“抢着”修改sequencenum变量时,会发生问题。
因为它是静态的,所以多个线程实质上共享了它,但在访问它时却没有加锁。
static
变量 类实例变量
局部变量
的 线程安全
问题
来说说静态变量、实例变量、
局部变量
在
多线程
下的安全
问题
吧! (一)静态变量:线程非安全 1、静态变量:
使用
static
关键字定义的变量。
static
可以修饰变量和方法,也有
static
静态代码块。被stati...
Java
多线程
中
static
变量的
使用
Java
多线程
中
static
变量的
使用
线程,是我们项目
中
绕不过的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。其实,这是一个有点难以
基础巩固-java-Java
多线程
中
static
变量的
使用
有时候,对于在
多线程
中
使用
static
变量有没有冲突,是否存在安全
问题
不能十分的确定。在
使用
过程
中
有点含糊,总想找点时间好好追究一下,可总因开发项目时间的紧迫而搁浅。我想,没有做进一步的研究而拿项目繁忙说事...
C++
多线程
操作
static
对象安全吗?一篇文章带你秒懂!
C++
多线程
操作
static
对象安全吗?一篇文章带你秒懂!
多线程
synchronized关键字与
局部变量
,全局变量,静态变量
观察
局部变量
,全局变量,静态变量在单线程和
多线程
环境下的不同表现,为
多线程
编程
提供思路。 我们看一个简单例子,它的业务可以理解成售票功能。有一个静态变量记录总票数。 public class MultiThread { //我的...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章