这是一个指向调用对象的指针(它返回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) 我有一个由作家和读者组成的程序,其访问权限由监视器控制。
因此,这本来很饿,但我陷入了僵局。我想知道为什么,然后我想起我又放了一把锁,我认为这对于在读取器内部的读取方法内部是不必要的,以防止全局变量受到不一致的影响。我认为这不会造成任何死锁,因为我可以在没有任何死锁的情况下运行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)