C语言多线程打印字符串:每秒打印一个字符,实现"Hello World"
#include <stdio.h>\n#include <stdlib.h>\n#include <pthread.h>\n#include <unistd.h>\n\n// \u5b9a\u4e49\u5168\u5c40\u53d8\u91cf\nchar* str = "Hello World";\nint finished = 0;\n\n// \u7ebf\u7a0b\u51fd\u6570\nvoid* printCharacter(void* arg) {\n char* character = (char*) arg;\n int index = 0;\n\n while (!finished) {\n printf("%c", character[index]);\n fflush(stdout);\n index = (index + 1) % 11; // \u6bcf\u6bcf\u4e00\u79d2\u6253\u5370\u4e00\u4e2a\u5b57\u7b26\n sleep(1);\n }\n\n return NULL;\n}\n\nint main() {\n // \u521b\u5efa\u4e94\u4e2a\u7ebf\u7a0b\n pthread_t threads[5];\n int i;\n\n for (i = 0; i < 5; i++) {\n pthread_create(&threads[i], NULL, printCharacter, (void*) str);\n }\n\n // \u6253\u537010\u79d2\n sleep(10);\n finished = 1;\n\n // \u7b49\u5f85\u7ebf\u7a0b\u7ed3\u675f\n for (i = 0; i < 5; i++) {\n pthread_join(threads[i], NULL);\n }\n\n return 0;\n}\n\n\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u4e86pthread\u5e93\u6765\u521b\u5efa\u548c\u7ba1\u7406\u7ebf\u7a0b\u3002\u9996\u5148\uff0c\u6211\u4eec\u5b9a\u4e49\u4e86\u4e00\u4e2a\u5168\u5c40\u53d8\u91cfstr\u5b58\u50a8\u8981\u6253\u5370\u7684\u5b57\u7b26\u4e32\uff0c\u4ee5\u53ca\u4e00\u4e2afinished\u53d8\u91cf\u6765\u6807\u8bb0\u7ebf\u7a0b\u662f\u5426\u7ed3\u675f\u3002\n\n\u7136\u540e\uff0c\u6211\u4eec\u5b9a\u4e49\u4e86\u4e00\u4e2a\u7ebf\u7a0b\u51fd\u6570printCharacter\uff0c\u8be5\u51fd\u6570\u63a5\u6536\u4e00\u4e2a\u53c2\u6570arg\uff0c\u7528\u4e8e\u4f20\u9012\u8981\u6253\u5370\u7684\u5b57\u7b26\u4e32\u3002\u5728\u51fd\u6570\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u4e00\u4e2a\u5faa\u73af\u6765\u6253\u5370\u5b57\u7b26\u4e32\u4e2d\u7684\u5b57\u7b26\uff0c\u6bcf\u6bcf\u4e00\u79d2\u6253\u5370\u4e00\u4e2a\u5b57\u7b26\u3002\u5faa\u73af\u6761\u4ef6\u4e2d\u7684!finished\u7528\u4e8e\u5224\u65ad\u7ebf\u7a0b\u662f\u5426\u7ed3\u675f\u3002\n\n\u5728\u4e3b\u51fd\u6570\u4e2d\uff0c\u6211\u4eec\u521b\u5efa\u4e86\u4e94\u4e2a\u7ebf\u7a0b\uff0c\u5e76\u5c06printCharacter\u51fd\u6570\u4f5c\u4e3a\u7ebf\u7a0b\u51fd\u6570\u3002\u7136\u540e\uff0c\u6211\u4eec\u4f7f\u7528sleep\u51fd\u6570\u6765\u7b49\u5f8510\u79d2\u949f\uff0c\u4e4b\u540e\u5c06finished\u53d8\u91cf\u8bbe\u7f6e\u4e3a1\uff0c\u8868\u793a\u7ebf\u7a0b\u7ed3\u675f\u3002\u6700\u540e\uff0c\u6211\u4eec\u4f7f\u7528pthread_join\u51fd\u6570\u6765\u7b49\u5f85\u6240\u6709\u7ebf\u7a0b\u7ed3\u675f\u3002\n\n\u5f53\u7a0b\u5e8f\u8fd0\u884c\u65f6\uff0c\u6bcf\u4e2a\u7ebf\u7a0b\u5c06\u4ee5\u4e0d\u540c\u7684\u987a\u5e8f\u6253\u5370\u51fa\u5b57\u7b26\u4e32\u4e2d\u7684\u5b57\u7b26\uff0c\u6bcf\u6bcf\u4e00\u79d2\u949f\u6253\u5370\u4e00\u4e2a\u5b57\u7b26\uff0c\u6301\u7eed10\u79d2\u949f\u540e\u7ebf\u7a0b\u7ed3\u675f\u3002
原文地址: https://www.cveoy.top/t/topic/qEae 著作权归作者所有。请勿转载和采集!