ST7789上手实践:在Arduino平台实现屏幕点亮
2026/1/16 5:11:47
在之前的程序里,多线程间共享计数器很简单,只需将计数器存为全局变量。现在,我们要修改程序,实现不同进程间的同步。
为了让父进程和子进程共享计数器,我们把计数器存于共享内存中,该共享内存由my-shm函数分配,代码如下:
void * my-shm(size_t nbytes) { void *shared; #if defined(MAP_ANON) shared = mmap(NULL, nbytes, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0); #elif defined(HAVE_DEV_ZERO) int fd; /* memory map /dev/zero */ if ((fd = open("/dev/zero", O_RDWR)) == -1) return (MAP_FAILED); shared = mmap(NULL, nbytes, PROT_READ | PROT_WRITE | MAP_SHARED, fd, 0); close(fd); #else #error cannot determine what type of anonymous shared memory to use #endif return (shared); /* MAP_FAILED on error */ }如果系统支持