全局变量增量,但当我尝试减少它时,它不起作用

时间:2013-11-01 17:04:38

标签: c

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

除了其他东西,我有一个缓冲区,其中有来自客户端的请求,我还有一个线程打印主线程放在缓冲区中的请求。

因此,例如,我有3个请求打印3个文件,而printer_thread必须一个接一个地打印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是有效的,一切都在起作用,而count--不是???

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

0 个答案:

没有答案