-1
シンプルにすると、2つのタスクが必要です.1つのタスクは優先度が高く、もう1つは低いです。優先度が高いときタスクは実行中低優先度タスクが停止し、高優先度タスクが完了した後、低優先度タスクは前の状態から再開する必要があります。 助けが必要です.. これは私が使用した例です。プリエンプションと優先度を持つ2つのタスクを作成する
`#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *print_message_function(void *ptr);
main()
{
pthread_t thread1, thread2;
const char *message1 = "Thread 1";
const char *message2 = "Thread 2";
int th1, th2;
/* Create independent threads each of which will execute function */
while (1)
{
th1 = pthread_create(&thread1, NULL, print_message_function, (void*) message1);
if(th1)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",th1);
exit(EXIT_FAILURE);
}
th2 = pthread_create(&thread2, NULL, print_message_function, (void*) message2);
if(th2)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",th2);
exit(EXIT_FAILURE);
}
printf("pthread_create() for thread 1 returns: %d\n",th1);
printf("pthread_create() for thread 2 returns: %d\n",th2);
}
/* Wait till threads are complete before main continues. Unless we */
/* wait we run the risk of executing an exit which will terminate */
/* the process and all threads before the threads have completed. */
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
exit(EXIT_SUCCESS);
}
void *print_message_function(void *ptr)
{
char *message;
message = (char *) ptr;
printf("%s \n", message);
}
`
あなたの努力は、別のスレッドで待つスレッドが非常にマルティスレッドではありません – LPs
表示します。 – tofro
@tofro:ok。マルチスレッドではありませんが、私はどのようにして目標を達成しますか? –