当前位置: 技术问答>linux和unix
用Glib库写的一个小程序,大家帮忙看看
来源: 互联网 发布时间:2016-08-10
本文导语: 主要用了Glib的线程池和异步队列,也用了标准c中的函数,我还不确定是否可以混用这两者??? 首先就是内存映射报错!mmap failed!!但是我在没用Glib函数的程序中却能够映射成功! 还有个警告就是说g_thread_pool_new(my...
主要用了Glib的线程池和异步队列,也用了标准c中的函数,我还不确定是否可以混用这两者???
首先就是内存映射报错!mmap failed!!但是我在没用Glib函数的程序中却能够映射成功!
还有个警告就是说g_thread_pool_new(my_process,NULL,10,FALSE,NULL);第 1 个参数时在不兼容的指针类型间转换
那定义myprocess函数时该指定个什么类型????
多谢大家了!!!
首先就是内存映射报错!mmap failed!!但是我在没用Glib函数的程序中却能够映射成功!
还有个警告就是说g_thread_pool_new(my_process,NULL,10,FALSE,NULL);第 1 个参数时在不兼容的指针类型间转换
那定义myprocess函数时该指定个什么类型????
多谢大家了!!!
#include
#include
#include
#include
#include
#include
#include
#include
GFunc*
my_process(gpointer data)
{
printf("%sn",(char *)data);
}
int
main(int argc,char **argv)
{
int fd;
char *ptr_fd,*ptr_oid,*out_ptr = NULL;
int j,que_len = 0;
gint i;
char *ptr;
struct stat st;
GAsyncQueue *async_q;
fd = open("test.txt",O_RDWR);
fstat(fd,&st);
ptr_fd = mmap(NULL,st.st_size,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0);
if(ptr_fd = MAP_FAILED){
printf("mmap failed!n");
return 1;
}
if (!g_thread_supported ())
g_thread_init (NULL);
async_q = g_async_queue_new();
ptr_oid = (char *)strtok_r(ptr_fd,"n",&out_ptr);
g_async_queue_push(async_q,(gpointer)ptr_oid);
que_len ++;
while(ptr_oid = (char *)strtok_r(NULL,"n",&out_ptr)){
g_async_queue_push(async_q,(gpointer)ptr_oid);
que_len ++;
}
GThreadPool *pool;
gpointer data;
pool = g_thread_pool_new(my_process,NULL,10,FALSE,NULL);
for(i = 0; i
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。