1 同步和锁, 保证这段代码同时只有一个线程可以使用
2 互斥信号量

 

线程安全,就是指某一个对象,会被多个线程同时使用。 有可能造成状态的不一致实现线程安全的方法是 1 同步和锁, 保证这段代码同时只有一个线程可以使用 2 互斥信号量

 

信号量Semaphore用于:
对一个共享资源(互相排斥)访问的控制;表示一个事件的发生;让两个任务同步。
下面代码中的信号量:shared_resource_sem用于对一个共享资源(相互排斥)访问的控制;而信号量key_down_sem则表示一个事件的发生。如果一个信号量的值大于0,则可以使用。如果信号量的值为0,则对该信号量的Pend操作将被放置在等待列表中。
对一个信号量进行初始化时,必须提供该信号量的初始值。初始值可以有以下三种:
0:当信号量用于表示一个事件发生时,如:
key_down_sem = OSSemCreate(0);

1:当信号量用于对一个共享资源访问的控制时,如:
shared_resource_sem = OSSemCreate(1);
n:当信号量用于表示允许任务n个相同的资源时。还应该注意把信号量的初始化放在RTOS启动前