小编Ran*_*344的帖子

在C中从main调用void*函数

目前我正在研究一个程序,它使用线程来计算平方根的总和.我的程序工作,但其中一个要求是使用主线程来查找初始值,并且一旦我从main调用函数Void*calc,程序就会中断.是否有某种方法可以进行这样的函数调用?这是因为函数是指针吗?任何帮助表示赞赏.

#include <pthread.h>
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#define NUM_THREADS 3
int ARGV;
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
double total = 0;


void *calc(void* t){
    int ph = (int)t + 1;
    int start, stop, interval_size;
    interval_size = ARGV/(NUM_THREADS + 1);
    start = ((ph) * interval_size) + 1;
    stop = (ph * interval_size) + 1;
    double ttl;
    int i;

    for (i = start; i <= stop; i++){
            ttl = ttl + sqrt(i);
            printf("Total Thread %i %lf\n", ph, ttl);
        }


    pthread_mutex_lock(&m);
    total …
Run Code Online (Sandbox Code Playgroud)

c multithreading function void

2
推荐指数
1
解决办法
263
查看次数

C中的线程问题

我从程序中收到错误,这仍然是一项正在进行的工作,错误让我感到困惑.该程序是一个使用线程加速计算平方根之和的数字,该数字可被4整除.我的代码如下.

#include <pthread.h>
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#define NUM_THREADS 3;
int ARGV;
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
int total;


void *calc(int t){
int ttl;
int i;
if (t == 0) {
    for (i == ((ARGV / 4) + 1); i < (ARGV / 2); i++){
        ttl = ttl + sqrt(i);
    }
} else if (t == 1) {
    for (i == ((ARGV / 2) + 1); i < ((3 * ARGV) / 4); i++){
        ttl = ttl + sqrt(i); …
Run Code Online (Sandbox Code Playgroud)

c syntax-error

0
推荐指数
1
解决办法
60
查看次数

标签 统计

c ×2

function ×1

multithreading ×1

syntax-error ×1

void ×1