为什么这个简单的服务器在非常低的并发请求中失败?

时间:2017-10-27 12:49:44

标签: c++ sockets pthreads

- service: name={{ item }} enabled=no state=stopped only_if_present=yes
  with_items:
  - avahi-daemon
  - abrtd
  - abrt-ccpp

这是服务器的代码。它只是为每个连接创建一个新线程,然后读取一个整数,然后回复整数%100。

没有并发请求时效果很好。但是,它也应该同时工作。但它仅在10个并发请求中失败。

1 个答案:

答案 0 :(得分:0)

您在不同的线程中一次又一次地使用fd内存。即它会在每次接受时被覆盖。

更改

pthread_create(&p, NULL, deal, (void *) &fd);

pthread_create(&p, NULL, deal, (void *) fd);

void *deal(void *arg) {
int fd = * (int *) arg;

void *deal(void *arg) {
int fd = (int) arg;