小编use*_*016的帖子

什么&**这个回归到底是什么?

这是一个指向调用对象的指针(它返回r值).

*这是一个指向调用对象指针的指针(它返回地址的值).

**这是一个指向调用对象(???)指针的指针.

&***这是对调用对象(???)指针指针的引用.

std::vector<int>:: iterator i = vector1.begin();
Run Code Online (Sandbox Code Playgroud)

我是指向它自己的r值的指针(返回它自己的值).

*i是向量中包含的对象的r值的指针(返回&value中指向的值).

**i是指向包含在向量(???)中的对象的r值的指针.

我真的很困惑.

这是一个示例代码,我们在其中找到表达式&**this:

class _Iter
{
private:
    ListElem *pCurr;
    const List *pList;

public:
    _Iter(ListElem *pCurr, const List *list)
        : pCurr_(pCurr), pList(list)
    {}

    T& operator*() { return pCurr_->data; }
    T* operator->() { return &**this; }
};
Run Code Online (Sandbox Code Playgroud)

c++ pointers

11
推荐指数
1
解决办法
649
查看次数

多级锁能否在多线程程序中导致死锁?

我有一个由作家和读者组成的程序,其访问权限由监视器控制。

因此,这本来很饿,但我陷入了僵局。我想知道为什么,然后我想起我又放了一把锁,我认为这对于在读取器内部的读取方法内部是不必要的,以防止全局变量受到不一致的影响。我认为这不会造成任何死锁,因为我可以在没有任何死锁的情况下运行10000次线程,但是当我必须进行实验室演示时,它在我认为的第10010个线程处死锁。我不明白为什么会那样做。另外,我没想到它会饿死,但显然它应该这样做。

我的问题是:这些多级锁是否导致死锁?如果没有,这是什么原因造成的?

    import java.io.*;
    import java.io.IOException;
    import java.util.*;

    public class Writer extends Thread{

    private int number;

    public Writer(int number)
    {
        this.number = number;
    }

    public int getNumber()
    {
        return number;
    }

        public static void Write(String filename){

        try {

            String content = RandomString();


            File f = new File(filename);

            if (!f.exists())
            {
                f.createNewFile();
            }


            PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("Task1out.txt", true)));
            out.println(content);
            out.close();


        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String RandomString(){

        String chars = new String("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); …
Run Code Online (Sandbox Code Playgroud)

java multithreading deadlock locks

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

标签 统计

c++ ×1

deadlock ×1

java ×1

locks ×1

multithreading ×1

pointers ×1