# signal **Repository Path**: kaiqiangdream/signal ## Basic Information - **Project Name**: signal - **Description**: timer signal - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2020-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README /* 此工程运行于windows平台,运行于linux平台需要修改以下东西: 一、app.c中调用了windows平台api 二、将Makefile中 del 改为 rm */ 关于锁的思考: 一、如果用全局变量当成锁:可能会出现下面的问题 if(global==0) { // line 1 global = 1; //run user code global = 0; } 但其他进程或者线程,可能在上述 line 1 处被获取到global,造成风险。 二、使用硬件的TsetAndSet指令的支持, 使查询和赋值具有原子性。 TsetAndSet()伪代码: /* 1、若*lock为0,将*lock设置为1,函数返回0.证明此时无锁 2、若*lock为1,将*lock设置为1,数值不变,函数一直返回1. */ int TestAndSet(int *lock) { int ret = *lock; *lock = 1; return ret; } 调用while(TestAndSet(&lock));真值则循环等待。