我有一个通过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--不是???
很抱歉,如果问题结构不合理。