社区
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;
}
...全文
712
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写文章
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变量时,会发生问题。
因为它是静态的,所以多个线程实质上共享了它,但在访问它时却没有加锁。
Java进阶篇
这篇博客主要记录在写Java过程
中
遇到的一系列
问题
问题
的解答会引用大牛们的解答或者博客,同样会一直更新下去... 1.如果在一个方法类里定义了一个内部类(比如匿名类),那么该内部类不能引用该方法里的非final型变量。 关于这个
问题
的根本性解答还是比较难的。从表面上来说,我们知道变量会在方法调用完就直接销毁,而内部类呢,在方法调用完后并不一定销毁了,因此会出现内部类引用已销毁的变量
C语言
static
变量 5 个易错点解析:从初始化时机到线程安全
本文深入解析C语言
中
static
变量的5个常见易错点,包括初始化时机、多文件
编程
中
的链接属性、线程安全
问题
、递归函数
中
的
使用
陷阱以及构造与析构顺序
问题
。通过代码示例和解决方案,帮助开发者避免潜在bug,提升代码健壮性。特别关注
static
关键字在
多线程
环境下的安全
使用
。
2021笔记
解释:输出为13,performSelector方法失效了,因为这个代码运行在全局并发队列
中
的一个线程
中
,但GCD所维护的线程默认不开启runloop循环,performSelector:withObject:afterDelay必须所在线程开启runloop才行,因为用到了延时,底层是开启了个计时器,但是计时器需要放到runloop才行,如果用performSelector就不会有这个
问题
。每个对象都有一个弱引用数组表,用来管理曾经他被弱引用的指针对象,最后通过这个弱引用数组表把所有的都置为nil。
static
变量 类实例变量
局部变量
的 线程安全
问题
线程,是我们项目
中
绕不过的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。其实,这是一个有点难以定义的概念,不是很容易让人一听就懂的概念。“一个类可以被多个线程安全调用就是线程安全的”《Java
编程
并发实践》。 来说说静态变量、实例变量、
局部变量
在
多线程
下的安全
问题
吧! (一)静态变量:线程非安全 1、静态变量:
使用
static
关键字定义的变量。
static
可以修饰变量和方法,也有
static
静态代码块。被stati...
Java
多线程
中
static
变量的
使用
Java
中
没处理好同步 导致两个线程同时为一个
static
变量赋值 会导致什么后果? Java
中
没处理好同步 导致两个线程同时为一个
static
变量赋值 会导致什么后果?仅仅是多耗资源还是会引发异常? 不会耗资源 也不会引发异常 而是程序出现逻辑错误,如本来该出现 3 的地方出现了 2 …,这比前两种情况更严重 Java
多线程
中
static
变量的
使用
线程,是我们项目
中
绕不过的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。其实,这是一个有点难以
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章