在有关Photon图形界面的编程中,若遇到长任务时,会使界面对鼠标键盘事件无法响应,请问如何处理比较合理?
我感觉Photon界面编程中,只是通过事件来调用那么callback函数。若遇到长任务时,该任务长时间占用系统资源,致使其它的callback函数无法被响应。请问这种情况如何处理呀?photon中,可不可以创建进程,让每一个进程完成各自的任务呀?
请大家帮忙给予解答,非常感谢哦。
在有关Photon图形界面的编程中,若遇到长任务时,会使界面对鼠标键盘事件无法响应,请问如何处理比较合理?
我感觉Photon界面编程中,只是通过事件来调用那么callback函数。若遇到长任务时,该任务长时间占用系统资源,致使其它的callback函数无法被响应。请问这种情况如何处理呀?photon中,可不可以创建进程,让每一个进程完成各自的任务呀?
请大家帮忙给予解答,非常感谢哦。
方法一:PtBkgdHandlerProcess()
{
int done = 0;
while ( !done )
{
/* Handle all pending Photon events */
PtBkgdHandlerProcess( );
/* Do some work, setting done if finished */
}
}
方法二:Create a thread:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void* function( void* arg )
{
printf( "This is thread %d\n", pthread_self() );
return( 0 );
}
int main( void )
{
pthread_attr_t attr;
pthread_attr_init( &attr );
pthread_attr_setdetachstate(
&attr, PTHREAD_CREATE_DETACHED );
pthread_create( NULL, &attr, &function, NULL );
/* Allow threads to run for 60 seconds. */
sleep( 60 );
return EXIT_SUCCESS;
}
你好,谢谢你的回复。
我想问一下,在photon界面编程中,主函数main()是不允许改动的。那请问你的第二种方面在主函数中创建线程,那不是改动了主函数中了吗?
PhAB对每个工程可以设置一个setup函数的,该函数具有main函数的所有命令行参数,还可以指定其运行的先后。可以找一下phab的菜单。
不过你的情况线程应该是在callback函数里创建的吧。