|
|
|
Очередь в С как в FreeRTOS.
|
|||
|---|---|---|---|
|
#18+
Хочу сделать что то вроде Код: c# 1. 2. 3. и что то я запутался Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. но так не соблюдается принцип FIFO. или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 08:02 |
|
||
|
Очередь в С как в FreeRTOS.
|
|||
|---|---|---|---|
|
#18+
jenya7, Это у вас стек. Чтобы сделать FIFO используйте кольцевой буфер. У вас уже все почти есть, только вместо одного idx используйте 2 указателя: write_idx и read_idx. При чтении и записи в очередь инкрементируйте соотв. указатель, и при достижении края массива заворачивайте в 0. PS. Ну и тут заменить uint8_t на size_t Код: sql 1. 2. 3. А то одно неловкое движение и будет переполнение uint8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2018, 18:17 |
|
||
|
Очередь в С как в FreeRTOS.
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyjenya7, Это у вас стек. Чтобы сделать FIFO используйте кольцевой буфер. У вас уже все почти есть, только вместо одного idx используйте 2 указателя: write_idx и read_idx. При чтении и записи в очередь инкрементируйте соотв. указатель, и при достижении края массива заворачивайте в 0. PS. Ну и тут заменить uint8_t на size_t Код: sql 1. 2. 3. А то одно неловкое движение и будет переполнение uint8 спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2018, 09:17 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39659377&tid=1340100]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 401ms |

| 0 / 0 |
