Index: benchmark/io/http/http_ring.cpp
===================================================================
--- benchmark/io/http/http_ring.cpp	(revision cd704777606aff138d3b9bf168102062498517b5)
+++ benchmark/io/http/http_ring.cpp	(revision c2351798a8039f2b6372f1d5e3447b051e1b4906)
@@ -20,4 +20,5 @@
 		socklen_t *addrlen;
 		int flags;
+		unsigned cnt;
 	} acpt;
 
@@ -433,5 +434,7 @@
 	// Accept our first connection
 	// May not take effect until io_uring_submit_and_wait
-	connection::accept(ring, opt);
+	for(unsigned i = 0; i < opt.acpt.cnt; i++) {
+		connection::accept(ring, opt);
+	}
 
 	int reset = 1;       // Counter to print stats once in a while
@@ -528,4 +531,5 @@
 	unsigned entries = 256;     // number of entries per ring/kernel thread
 	unsigned backlog = 262144;  // backlog argument to listen
+	unsigned preaccept = 1;     // start by accepting X per threads
 	bool attach = false;        // Whether or not to attach all the rings
 	bool sqpoll = false;        // Whether or not to use SQ Polling
@@ -534,5 +538,5 @@
 	// Arguments Parsing
 	int c;
-	while ((c = getopt (argc, argv, "t:p:e:b:aS")) != -1) {
+	while ((c = getopt (argc, argv, "t:p:e:b:c:aS")) != -1) {
 		switch (c)
 		{
@@ -548,4 +552,7 @@
 		case 'b':
 			backlog = atoi(optarg);
+			break;
+		case 'c':
+			preaccept = atoi(optarg);
 			break;
 		case 'a':
@@ -681,4 +688,5 @@
 		thrd_opts[i].acpt.addrlen = (socklen_t*)&addrlen;
 		thrd_opts[i].acpt.flags   = 0;
+		thrd_opts[i].acpt.cnt     = preaccept;
 		thrd_opts[i].endfd        = efd;
 		thrd_opts[i].ring         = &thrd_rings[i].storage;
