线程安全及strtok简析

本文介绍了线程安全的定义,并详细分析了strtok函数的用法、实现原理及其线程不安全的原因,通过测试实例展示了线程不安全问题。同时,探讨了可重入函数的概念,解析了strtok_r的实现原理和线程安全性,通过示例证明了strtok_r的线程安全特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程安全定义:

线程安全是指在多个线程同时访问同一个函数的时候,不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个函数都可以获得正确的结果(达到我们预想的那样),那么这个函数就是线程安全的。

或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题,这就是线程安全的。

线程安全问题都是由全局变量静态变量引起的(线程共享的数据)。

若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。(来自于百度百科)

线程不安全函数

Linux中这么多函数都是线程不安全的,除此之外其他函数都是线程安全的。 

简析strtok

从表中可以看出strtok是线程不安全的,那么为什么这个函数是线程不安全的呢?我们一起来看看

#include<string.h>
char *strtok(char *strToken, const char *strDelimit );
                            //根据strDelimit将strToken分割,返回每次分割的元素地址

strtok用法:

strtok将字符串分解为标记,strToken为要分解的字符串,strDelimit分隔符<

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值