【发布时间】:2016-10-04 10:17:03
【问题描述】:
简单来说,我需要两个任务,一个任务优先级高,另一个任务低。高优先级时。任务正在执行中,低优先级任务应该停止,高优先级任务完成后,低优先级任务应该从之前的状态恢复。 所以需要帮助。。 这是我用的例子。
`#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);
}
`
【问题讨论】:
-
展示你的努力
-
一个线程被另一个线程等待不是非常多线程的。
-
@tofro:好的。不是多线程,而是我如何实现我的目标。?
-
你所描述的听起来更像是实时任务,高优先级任务总是抢占低优先级任务。也许你可以看看RTLinux...
-
关于该主题的一些类似问题:stackoverflow.com/q/1606400/1212012、stackoverflow.com/q/9397068/1212012、stackoverflow.com/q/11046720/1212012。难点在于暂停低优先级的线程,恢复很简单。
标签: c linux multithreading