简单多线程示例
以下是一个简单的多线程示例,其中独立线程对同一组事件进行计数。
# include <pmapi.h>
pm_data_t data2;
void *
doit(void *)
{
(1) pm_start_mythread();
... usefull work ....
pm_stop_mythread();
pm_get_data_mythread(&data2);
}
main()
{
pthread_t threadid;
pthread_attr_t attr;
pthread_addr_t status;
... same initialization as in previous example ...
pm_program_mythread(&prog);
/* setup 1:1 mode */
pthread_attr_init(&attr);
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
pthread_create(&threadid, &attr, doit, NULL);
(2) pm_start_mythread();
... usefull work ....
pm_stop_mythread();
pm_get_data_mythread(&data);
... print main thread results (data )...
pthread_join(threadid, &status);
... print auxiliary thread results (data2) ...
}在前面的示例中,对于主线程和辅助线程,计数分别从 (1) 和 (2) 开始,因为初始计数状态为关闭,并且辅助线程从其创建者继承。