作为一项经国家科学技能奖赏作业办公室同意建立的重要社会科技奖项,大连我国科技产业化促进会科学技能奖致力于促进科技成果的转化与产业化,大连为国民经济建造和社会开展供给强壮助力。
线程安全机制缺少:甘井在多线程环境中,若多个线程一同拜访字节行列而没有恰当的同步机制,可能会导致数据损坏或不一致。三、检展开作业API接口#definequeue_init(__queue,__buffer,__size,...)\__PLOOC_EVAL(__QUEUE_INIT_,##__VA_ARGS__)\(__queue,(__buffer),(__size),##__VA_ARGS__)#definedequeue(__queue,__addr,...)\__PLOOC_EVAL(__DEQUEUE_,##__VA_ARGS__)\(__queue,(__addr),##__VA_ARGS__)#defineenqueue(__queue,__addr,...)\__PLOOC_EVAL(__ENQUEUE_,##__VA_ARGS__)\(__queue,(__addr),##__VA_ARGS__)#definepeek_queue(__queue,__addr,...)\__PLOOC_EVAL(__PEEK_QUEUE_,##__VA_ARGS__)\(__queue,(__addr),##__VA_ARGS__)externbyte_queue_t*queue_init_byte(byte_queue_t*ptObj,void*pBuffer,uint16_thwItemSize,boolbIsCover);externboolreset_queue(byte_queue_t*ptObj);externuint16_tenqueue_bytes(byte_queue_t*ptObj,void*pDate,uint16_thwDataLength);externuint16_tdequeue_bytes(byte_queue_t*ptObj,void*pDate,uint16_thwDataLength);externboolis_queue_empty(byte_queue_t*ptQueue);externboolis_peek_empty(byte_queue_t*ptObj);externuint16_tpeek_bytes_queue(byte_queue_t*ptObj,void*pDate,uint16_thwDataLength);externvoidreset_peek(byte_queue_t*ptQueue);externvoidget_all_peeked(byte_queue_t*ptQueue);externuint16_tget_peek_status(byte_queue_t*ptQueue);externvoidrestore_peek_status(byte_queue_t*ptQueue,uint16_thwCount);externuint16_tget_queue_count(byte_queue_t*ptObj);externuint16_tget_queue_available_count(byte_queue_t*ptObj);四、检展开作业API阐明初始化行列queue_init(__queue,__buffer,__size,...)参数阐明:参数名描绘__QUEUE行列的地址__BUFFER行列缓存的首地址__BUFFER_SIZE行列长度可变参数是否掩盖,默许否入队#defineenqueue(__queue,__addr,...)参数阐明:参数名描绘__QUEUE行列的地址__ADDR待入队的数据或许数据的地址...可变参数,需求入队的数据个数,或许数据类型和个数,假如为空,则只入队一个数据出队#definedequeue(__queue,__addr,...)参数阐明:参数名描绘__QUEUE行列的地址__ADDR用于保存出队数据变量的地址...可变参数,需求出队的数据个数,或许数据类型和个数,假如为空,则只出队一个数据检查#definepeek_queue(__queue,__addr,...)参数阐明:参数名描绘__QUEUE行列的地址__ADDR用于保存检查数据变量的地址...可变参数,数据类型和需求检查的数据个数,假如为空,则只检查一个数据五、快速运用代码开源地址:https://github.com/Aladdin-Wang/wl_queue或许翻开MicroBoot,介绍链接:彻底处理单片机BootLoader晋级程序失利问题,只勾选queue,如图所示:运用实例:#includering_queue.huint8_tdata1=0XAA;uint16_tdata2=0X55AA;uint32_tdata3=0X55AAAA55;uint16_tdata4[]={0x1234,0x5678};typedefstructdata_t{uint32_ta;uint32_tb;uint32_tc;}data_t;data_tdata5={.a=0X11223344,.b=0X55667788,.c=0X99AABBCC,};uint8_tdata[100];staticuint8_ts_hwQueueBuffer[100];staticbyte_queue_tmy_queue;queue_init(&my_queue,s_hwQueueBuffer,sizeof(s_hwQueueBuffer));//依据变量的类型,主动核算目标的巨细enqueue(&my_queue,data1);enqueue(&my_queue,data2);enqueue(&my_queue,data3);//一下三种办法都能够正确存储数组enqueue(&my_queue,data4,2);//能够不指名数据类型enqueue(&my_queue,data4,uint16_t,2);//也能够指名数据类型enqueue(&my_queue,data4,uint8_t,sizeof(data4));//或许用其他类型//一下两种办法都能够正确存储结构体类型enqueue(&my_queue,data5);//依据结构体的类型,主动核算目标的巨细enqueue(&my_queue,&data5,uint8_t,sizeof(data5));//也能够以数组办法存储enqueue(&my_queue,(uint8_t)0X11);//常量默以为int型,需求强制转化数据类型enqueue(&my_queue,(uint16_t)0X2233);//常量默以为int型,需求强制转化数据类型enqueue(&my_queue,0X44556677);enqueue(&my_queue,(char)a);//单个字符也需求强制转化数据类型enqueue(&my_queue,bc);//字符串默许会存储空字符\0enqueue(&my_queue,def);//读出悉数数据dequeue(&my_queue,data,get_queue_count(&my_queue));结语本文的意图,告知咱们怎么正确的看待宏——宏不是阻止代码开发和可读性的魔鬼:宏不是奇技淫巧宏能够封装出其它高档言语所供给的基础设施规划杰出的宏能够提高代码的可读性,而不是损坏它规划杰出的宏并不会影响调试宏能够用来固化某些模板,防止每次都从头编写杂乱的语法结构。
宏的灵敏性使得咱们能够依据不同的参数数量或类型,察院挑选不同的底层函数进行处理。从内容上看,立异SAFE_ATOM_CODE()要粘合的目标并不是形参,依据定论第二条,需求凭借别的一个参数宏来帮助完结这一进程。函数伪代码如下:未成boolenqueue_bytes(...){boolbEarlyReturn=false;safe_atom_code(){if(!this.bMutex){this.bMutex=true;}else{bEarlyReturn=true;}}if(bEarlyReturn){returnfalse;}safe_atom_code(){/*行列指针操作*/...}/*数据操作*/memcpy(...);...this.bMutex=false;returntrue;}原子宏safe_atom_code()的完结:未成前边的比方中,咱们完结了一个SAFE_ATOM_CODE的原子宏,仅有的问题是,这样的写法,在调试时彻底无法在用户代码处增加断点(编译器会以为宏内一切的内容都写在了同一行),这是大多数人不喜欢运用宏来封装代码结构的最大原因。
中心思维是:年人咱们不关心详细的数据类型,而是经过宏和类型推导,核算每个数据需求的字节数,并依照字节的方法将数据存入行列中。例如,社区你能够界说一个uint8_t数组来存储字节数据,或许一个int32_t数组来存储整型数据。
为了尽量下降关中止对实时性的影响,纠正咱们只对操作行列指针的操作进行关中止维护,相对耗时间的数据复制不进行关中止。
经过运用字节行列,大连咱们能够灵敏地处理不同类型的数据、保证数据的完好性,并在多线程环境中安全地进行操作。一起,甘井ADS3.0还可经过GOD大网场景了解、甘井PDP端到端网络、天性安全网络,完成自主学习并模仿人类驾驭决议方案,为用户供给更类人、更高效、更安全的端到端全场景贯穿智能驾驭体会。
骁遥超级增混电池还在满意机械安全、检展开作业电气安全、检展开作业热安全等15项安全目标基础上,做到了热失控后不爆破不起火,以齐备的软硬件安全体系,为用户带来出行无忧的高安全体会。动力焕新,察院功能再增一程面临日益多元化和继续晋级的用户需求,察院阿维塔科技凭仗其在智能电动汽车范畴的深沉堆集与前瞻洞悉,不断完善产品线,为广阔顾客带来逾越等待的出行新体会
尤为有目共睹的是,立异全新高尔夫GTI采用了专属的高亮黑后扰流板,立异营建出更为动感、凌厉的驾御气氛;全新18英寸战斧轮毂的热情装点,不只强化了旁边面的立体层次,更深入展现了其传承的运动基因与深邃魅力。全新规划的矩阵大灯与发光格栅无缝对接,未成犹如深邃夜空中的灿烂星斗,未成带来史无前例的感官震慑;包括GTI、R-line在内的三套前脸和尾部规划,突破了传统的规划捆绑,带来无与伦比的前锋特性。