线程操作函数示例
CODE
#include <stdio.h>
#include <thread.h>
#include <errno.h>
#include <synch.h>
void work(void)
{
thread_t tid;
tid = thr_self();
printf("I am a worker thread %d\n",tid);
}
main()
{
int error,i,n;
thread_t tid,mytid;
printf("Enter number of forks: ");
scanf("%d",&n);
mytid = thr_self();
printf("thread %d creating thread\n",mytid);
for (i=1;i<=n;i++)
{
error = thr_create(NULL,0,(void *(*)(void *))work, NULL, 0, &tid);
printf("created thread %d\n",tid);
error = thr_join(tid,NULL,NULL);
printf("joined thread %d\n",tid);
}
printf("Done forking and joining threads\n");
}
CODE
#include <stdio.h>
#include <pthread.h>
#include <errno.h>
#define LIMIT 100
#define NUMCOUNTERS 10
int sum= 0;
void count(int *arg)
{
int i;
for (i=0;i<*arg;i++) {
sum++;
}
}
int main(int argc, char **argv)
{
int error,i;
int numcounters = NUMCOUNTERS;
int limit = LIMIT;
pthread_t tid[NUMCOUNTERS];
if (argc == 1)
{
printf("usage: badcount numcounters limit\n");
exit(1);
}
if (argc == 2)
{
numcounters = atoi(argv[1]);
}
if (argc == 3)
{
numcounters = atoi(argv[1]);
limit = atoi(argv[2]);
}
printf("numcounters = %d, limit = %d\n",numcounters, limit);
pthread_setconcurrency(numcounters);
for (i=0;i<numcounters;i++)
{
error = pthread_create(&tid[i],NULL,(void *(*)(void *))count,&limit);
}
for (i=0;i<numcounters;i++)
{
error = pthread_join(tid[i],NULL);
}
printf("Counters finished with count = %d\n",sum);
printf("Count should be %d X %d = %d\n",numcounters,limit,numcounters*limit);
return 0;
}
CODE
#include <stdio.h>
#include <pthread.h>
#include <errno.h>
#include <synch.h>
#define LIMIT 100
#define NUMCOUNTERS 10
#define MAXCOUNTERS 100
int sum= 0;
pthread_mutex_t lock;
void count(int *arg)
{
int i;
for (i=0;i<*arg;i++)
{
pthread_mutex_lock(&lock);
sum++;
pthread_mutex_unlock(&lock);
}
}
int main(int argc, char **argv)
{
int error,i;
int numcounters = NUMCOUNTERS;
int limit = LIMIT;
pthread_t mytid, tid[MAXCOUNTERS];
if (argc == 1)
{
printf("usage: goodcount numcounters limit\n");
exit(1);
}
if (argc == 2)
{
numcounters = atoi(argv[1]);
}
if (argc == 3)
{
numcounters = atoi(argv[1]);
limit = atoi(argv[2]);
}
printf("numcounters = %d, limit = %d\n",numcounters, limit);
pthread_setconcurrency(numcounters);
pthread_mutex_init(&lock,NULL);
for (i=1;i<=numcounters;i++)
{
error = pthread_create(&tid[i],NULL,(void *(*)(void *))count, &limit);
}
for (i=1;i<=numcounters;i++)
{
error = pthread_join(tid[i],NULL);
}
printf("Counters finished with count = %d\n",sum);
printf("Count should be %d X %d = %d\n",numcounters,limit,numcounters*limit);
return 0;
}
CODE
#include <stdio.h>
#include <pthread.h>
#include <errno.h>
#define LIMIT 100
#define NUMCOUNTERS 10
#define MAXCOUNTERS 100
int sum= 0;
pthread_mutex_t lock;
void count(int *arg)
{
int i;
int localsum = 0;
for (i=0;i<*arg;i++)
{
localsum++;
}
pthread_mutex_lock(&lock);
sum = sum + localsum;
pthread_mutex_unlock(&lock);
}
int main(int argc, char **argv)
{
int error,i;
int numcounters = NUMCOUNTERS;
int limit = LIMIT;
pthread_t tid[MAXCOUNTERS],mytid;
if (argc == 1)
{
printf("usage: bettercount numcounters limit\n");
exit(1);
}
if (argc == 2)
{
numcounters = atoi(argv[1]);
}
if (argc == 3)
{
numcounters = atoi(argv[1]);
limit = atoi(argv[2]);
}
printf("numcounters = %d, limit = %d\n",numcounters, limit);
pthread_setconcurrency(numcounters);
pthread_mutex_init(&lock,NULL);
for (i=1;i<=numcounters;i++)
{
error = pthread_create(&tid[i],NULL,(void *(*)(void *))count, &limit);
}
for (i=1;i<=numcounters;i++)
{
error = pthread_join(tid[i],NULL);
}
printf("Counters finished with count = %d\n",sum);
printf("Count should be %d X %d = %d\n",numcounters,limit,numcounters*limit);
return 0;
}
作者: 蓝色键盘 发布时间: 2003-10-20
,“玉豹”姜新。还有一位就是中原镖局中第一高手,“振威”的总哪里治疗白癜风好绝对保密的。他摆出来作幌子的货已经很象样,除了有限的几个人外哪里治疗白癜风好丁喜叹道:“你能不能少用嘴吹气,多用脑袋想想。”小马道:“能http://daisu401.b2bvip.com/sell/itemid-1723868.shtml:“咱们到保定府来,为的就是要找他?”丁喜道:“嗯。”小马忽哪里治疗白癜风好:“讨人喜欢的丁喜实在不愧是黑道上的第一号智多星,愤怒的小马
作者: dfjaljl 发布时间: 2011-10-26