Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/lib/libpthread add joins
details: https://anonhg.NetBSD.org/src/rev/c15efb98615e
branches: trunk
changeset: 997393:c15efb98615e
user: christos <christos%NetBSD.org@localhost>
date: Wed Mar 06 01:20:15 2019 +0000
description:
add joins
diffstat:
tests/lib/libpthread/h_resolv.c | 27 +++++++++++++++++----------
1 files changed, 17 insertions(+), 10 deletions(-)
diffs (92 lines):
diff -r 1cc43112eae8 -r c15efb98615e tests/lib/libpthread/h_resolv.c
--- a/tests/lib/libpthread/h_resolv.c Wed Mar 06 01:13:38 2019 +0000
+++ b/tests/lib/libpthread/h_resolv.c Wed Mar 06 01:20:15 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: h_resolv.c,v 1.2 2010/11/03 16:10:22 christos Exp $ */
+/* $NetBSD: h_resolv.c,v 1.3 2019/03/06 01:20:15 christos Exp $ */
/*-
* Copyright (c) 2004, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
#include <sys/cdefs.h>
__COPYRIGHT("@(#) Copyright (c) 2008\
The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: h_resolv.c,v 1.2 2010/11/03 16:10:22 christos Exp $");
+__RCSID("$NetBSD: h_resolv.c,v 1.3 2019/03/06 01:20:15 christos Exp $");
#include <pthread.h>
#include <stdio.h>
@@ -56,7 +56,7 @@
static void load(const char *);
static void resolvone(int);
static void *resolvloop(void *);
-static void run(int *);
+static pthread_t run(int *);
static pthread_mutex_t stats = PTHREAD_MUTEX_INITIALIZER;
@@ -77,7 +77,7 @@
char *line;
if ((fp = fopen(fname, "r")) == NULL)
- err(1, "Cannot open `%s'", fname);
+ err(EXIT_FAILURE, "Cannot open `%s'", fname);
while ((line = fgetln(fp, &len)) != NULL) {
char c = line[len];
char *ptr;
@@ -130,18 +130,20 @@
return NULL;
}
-static void
+static pthread_t
run(int *nhosts)
{
pthread_t self = pthread_self();
if (pthread_create(&self, NULL, resolvloop, nhosts) != 0)
- err(1, "pthread_create");
+ err(EXIT_FAILURE, "pthread_create");
+ return self;
}
int
main(int argc, char *argv[])
{
int nthreads = NTHREADS;
+ pthread_t *threads;
int nhosts = NHOSTS;
int i, c, done, *nleft;
hosts = sl_init();
@@ -170,16 +172,18 @@
usage();
if ((nleft = malloc(nthreads * sizeof(int))) == NULL)
- err(1, "malloc");
+ err(EXIT_FAILURE, "malloc");
if ((ask = calloc(hosts->sl_cur, sizeof(int))) == NULL)
- err(1, "calloc");
+ err(EXIT_FAILURE, "calloc");
if ((got = calloc(hosts->sl_cur, sizeof(int))) == NULL)
- err(1, "calloc");
+ err(EXIT_FAILURE, "calloc");
+ if ((threads = malloc(nthreads * sizeof(pthread_t))) == NULL)
+ err(EXIT_FAILURE, "calloc");
for (i = 0; i < nthreads; i++) {
nleft[i] = nhosts;
- run(&nleft[i]);
+ threads[i] = run(&nleft[i]);
}
for (done = 0; !done;) {
@@ -200,6 +204,9 @@
c++;
}
}
+ for (i = 0; i < nthreads; i++)
+ pthread_join(threads[i], NULL);
+ free(threads);
free(nleft);
free(ask);
free(got);
Home |
Main Index |
Thread Index |
Old Index