0

我有一个通过 TCP 套接字与服务器和客户端通信的程序。

除了其他事情,我还有一个缓冲区,其中包含来自客户端的未决请求,并且我还有一个线程打印由主线程放置在缓冲区中的请求。

因此,例如,我有 3 个打印 3 个文件的请求,而打印机线程必须一个接一个地打印 3 个文件。为此,我有一个函数“get”,用于获取要打印的文件,还有一个函数“put”,用于将文件放入缓冲区。当我获取缓冲区的某些内容时,它工作得很好,文件的打印也工作得很好。

当客户端想知道缓冲区中有多少文件要打印时,就会出现问题。我需要有一个计数器,只要将一个东西放在缓冲区中它就会增加,而任何时候我得到它就会减少一些东西,这很容易。

但它不起作用,我的程序只增加变量而不做任何减少。

int count = 0;
struct prodcons buffer;

/* some other code that is not important for now and works well */

void main_thread(int port_number){

/* more code */

put(&buffer, f_open);
count++;   ------> it increment every time that I do a put
nw = myWriteSocket(sc, "File has been Queued.", ARGVMAX);

/* more code */

void *printing(void *arg){

/* variables and other code that works */

file_desc = get(&buffer);
count--;  ---> now it never decrement, but the get is working because the files are printed


int main (int argc, char *argv[]) {

/* more code */

pthread_create(&printer_thread,NULL,printing, (void *)terminal);
    main_thread(port_number);

可能是什么问题?为什么 get 工作正常,所有工作也正常工作,而计数 - 不是???

抱歉,如果问题结构不合理。

4

0 回答 0