在协程之间共享变量

女武神

我正在执行一个非常密集的过程,可以将其拆分为多个coroutines,但是在它们中,只要获得正确的结果,就需要将其添加到变量中。目前,Lua似乎在为每个线程重置我要添加的变量,这给了我错误的结果。

我已经做了很多环顾四周的工作,但是还没有发现其他类似的问题。

相关代码

s=0

function calc(x,n)
    print(x,n)
    for a=x,n,1 do
        for b=a+1,n-1,1 do
            if is_coprime(a,b,false) then
                c=math.sqrt((a^2)+(b^2))
                if c<=b or c>n then break; end
                if is_coprime(a,b,c) then
                    s=s+1
                    break
                end
            end
        end
    end
end

function main(n)
    local t=0
    for i=1,n,n*.1 do
        co=coroutine.create(calc)
        coroutine.resume(co,i,n)
    end
    for _,v in ipairs(s) do
        t=t+1
    end
    return t
end
女武神

感谢@NicolBolas的评论,我将协程抛弃了,只是使用较小的缓冲区循环了所有程序。

function calc(x,n)
    local t={}
    for a=x,n,1 do
        for b=a+1,a^10,1 do
            if is_coprime(a,b,false) then
                c=math.sqrt((a^2)+(b^2))
                if c<=b or c>n then break; end
                if is_coprime(a,b,c) then
                    print(a,b,c)
                    t[tostring(a)..' '..tostring(b)..' '..tostring(c)]=true
                    break
                end
            end
        end
    end
    return t
end

function main(n)
    local t,s=0,{}
    for i=1,n,n*.1 do
        for k,v in pairs(calc(i,n)) do
            if s[k]==nil then
                s[k]=true
                t=t+1
            end
        end
    end
    return t
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在课程之间共享变量

来自分类Dev

在Tensorflow中的线程之间共享变量

来自分类Dev

在线程之间共享变量的方法

来自分类Dev

在进程之间共享变量-PHP

来自分类Dev

在JAVA中的线程之间共享变量

来自分类Dev

mod_perl在子进程之间共享变量

来自分类Dev

在Rust中的线程之间共享可变变量

来自分类Dev

在主线程和线程之间共享变量

来自分类Dev

在python中的多个进程之间共享类变量

来自分类Dev

写入位置访问冲突,线程之间共享变量

来自分类Dev

如何在线程之间共享变量?

来自分类Dev

关于在Python中的某些线程之间共享变量

来自分类Dev

在Rust中的线程之间共享可变变量

来自分类Dev

Delphi XE8-在线程之间共享变量

来自分类Dev

在两个线程之间共享时间变量

来自分类Dev

java如何在线程之间共享变量

来自分类Dev

Java:在线程之间共享和调用变量

来自分类Dev

进程之间共享内存

来自分类Dev

在Python进程之间共享具有对Tasklet(协程)具有写访问权的嵌套对象?

来自分类Dev

在线程之间正确共享变量(.NET / VB.NET)

来自分类Dev

在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

来自分类Dev

为什么在线程之间共享静态变量会降低性能?

来自分类Dev

如何在两个线程之间实时更新共享的布尔变量?

来自分类Dev

在与原子加载和存储同步的线程之间共享变量是否安全?

来自分类Dev

如何在php中的线程之间共享全局变量?

来自分类Dev

如何在进程之间共享日期变量-多处理Python

来自分类Dev

在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

来自分类Dev

为什么在线程之间共享静态变量会降低性能?

来自分类Dev

在UI表单和后台线程之间共享变量的安全方法

Related 相关文章

  1. 1

    在课程之间共享变量

  2. 2

    在Tensorflow中的线程之间共享变量

  3. 3

    在线程之间共享变量的方法

  4. 4

    在进程之间共享变量-PHP

  5. 5

    在JAVA中的线程之间共享变量

  6. 6

    mod_perl在子进程之间共享变量

  7. 7

    在Rust中的线程之间共享可变变量

  8. 8

    在主线程和线程之间共享变量

  9. 9

    在python中的多个进程之间共享类变量

  10. 10

    写入位置访问冲突,线程之间共享变量

  11. 11

    如何在线程之间共享变量?

  12. 12

    关于在Python中的某些线程之间共享变量

  13. 13

    在Rust中的线程之间共享可变变量

  14. 14

    Delphi XE8-在线程之间共享变量

  15. 15

    在两个线程之间共享时间变量

  16. 16

    java如何在线程之间共享变量

  17. 17

    Java:在线程之间共享和调用变量

  18. 18

    进程之间共享内存

  19. 19

    在Python进程之间共享具有对Tasklet(协程)具有写访问权的嵌套对象?

  20. 20

    在线程之间正确共享变量(.NET / VB.NET)

  21. 21

    在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

  22. 22

    为什么在线程之间共享静态变量会降低性能?

  23. 23

    如何在两个线程之间实时更新共享的布尔变量?

  24. 24

    在与原子加载和存储同步的线程之间共享变量是否安全?

  25. 25

    如何在php中的线程之间共享全局变量?

  26. 26

    如何在进程之间共享日期变量-多处理Python

  27. 27

    在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

  28. 28

    为什么在线程之间共享静态变量会降低性能?

  29. 29

    在UI表单和后台线程之间共享变量的安全方法

热门标签

归档