アイテムをキューに追加し、何かがキューにあるときにそれらを削除するスレッドが必要です。私は、スタックから何かを取り出してから、10 秒ほど待ってから、もう一度実行するというアプローチをとっていました。それをスレッドに投げ込む方法がわかりません。PuTTy で C を使用しています。私は機能を否定しました。スペースを節約するために thme をコピーしたくありませんでした。delete() 最初のものを削除するだけです。スレッドを10秒間一時停止するにはどうすればよいですか。Sleep は実際にコマンド ウィンドウを一時停止します。
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <conio.h>
#define MAXQUEUE 100
struct queue
{
char name[256];
struct queue *link;
};
void *thread_routine(void *arg) {
int tr;
while(tr!=0) {
sleep(10);
delete();
}
}
struct queue *start=NULL;
int i=0;
void main() {
pthread_t thread1;
pthread_t thread2;
void *thread_result;
int status;
status = pthread_create(&thread1, NULL, thread_routine, NULL);
if (status != 0) {
printf ("thread create failed\n");
exit(1);
}
/* wait for the thread to finish */
status = pthread_join(thread1, &thread_result);
if (status != 0) {
printf ("thread join failed\n");
exit(1);
}
printf ("child thread finished: result = %d\n", (int) thread_result);
int ch;
while(ch!=4) {
printf("\nSelect an option:\n");
printf("1 to add an item to the queue\n");
//printf("2 to delete an item from the queue\n");
printf("3 to print the queue\n");
printf("4 for Exit\n");
scanf("%d",&ch);
switch(ch) {
case 1:
add();
break;
case 2:
delete();
break;
case 3:
print();
break;
case 4:
break;
default:
printf("Incorrect option\n");
break;
}
}
}