static long long counter =0; static long long loops =0;
static void *worker(void *arg) { (void)arg; for (long long i =0; i < loops; i++) { counter +=1; // 故意不加锁:会丢更新 } returnNULL; }
static long long parse_ll(const char*s, const char*name) { errno =0; char*end=NULL; long long v = strtoll(s, &end, 10); if (errno !=0||end== s ||*end!='\0'|| v <0) { fprintf(stderr, "invalid %s: %s\n", name, s); exit(1); } return v; }
int main(int argc, char**argv) { if (argc !=3) { fprintf(stderr, "usage: %s <loops> <threads>\n", argv[0]); return1; }
loops = parse_ll(argv[1], "loops"); long long num_threads_ll = parse_ll(argv[2], "threads");
if (num_threads_ll <=0|| num_threads_ll >1000000) { fprintf(stderr, "threads out of range: %lld\n", num_threads_ll); return1; }
static long long counter =0; static long long loops =0;
static void *worker(void *arg) { (void)arg; for (long long i =0; i < loops; i++) { counter +=1; // 故意不加锁:会丢更新 } returnNULL; }
static long long parse_ll(const char*s, const char*name) { errno =0; char*end=NULL; long long v = strtoll(s, &end, 10); if (errno !=0||end== s ||*end!='\0'|| v <0) { fprintf(stderr, "invalid %s: %s\n", name, s); exit(1); } return v; }
int main(int argc, char**argv) { if (argc !=3) { fprintf(stderr, "usage: %s <loops> <threads>\n", argv[0]); return1; }
loops = parse_ll(argv[1], "loops"); long long num_threads_ll = parse_ll(argv[2], "threads");
if (num_threads_ll <=0|| num_threads_ll >1000000) { fprintf(stderr, "threads out of range: %lld\n", num_threads_ll); return1; }